3

Web Java アプリケーションからフロントエンドへの http 応答を介してビルド番号を送信する必要があります。しかし、ビルド時にそれを設定するための最良かつ正しい方法は何ですか? 私は竹でmavenを使用しています。バージョン番号を maven に渡すことができることはわかっています。しかし、次のステップについてはわかりません。maven から ant を実行し、ant からプロパティ ファイルにバージョンを書き込み、java アプリからリソースを使用してそれを読み取ることしか考えていません。アドバイスをお願いします。ありがとう

4

3 に答える 3

10

バージョン ファイルの作成に問題はないと思います (私たちのプロジェクトではこのアプローチを使用しています)。${build.version}ビルド時に何らかのプロパティ (fe) があることがわかっている場合は、フィルタリングを使用して目標を達成できます。

src/main/resources1)以下の内容でバージョンファイルを作成

Version: ${build.version}

2) pom.xml に以下を追加します。

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>

3) プロジェクトをビルドします。フィルタリングされたバージョン ファイルは に表示されtarget/classesます。

于 2012-08-27T15:40:31.183 に答える
7

manifest.mfの一部としてバージョン番号を含めます。SVN リビジョン (または他の SCM、同等のプラグインを見つけるだけでよい) をバージョン番号として使用する場合は、maven-svn-revision-number-pluginをmaven-war- pluginと共に使用できます。 .

これを SVN で使用する方法の例を次に示します。

<plugin>
    <groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
    <artifactId>svn-revision-number-maven-plugin</artifactId>
    <version>1.13</version>
    <executions>
        <execution>
            <goals>
                <goal>revision</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <entries>
            <entry>
                <prefix>scm</prefix>
            </entry>
        </entries>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <archive>
            <manifestEntries>
                <SCM-Revision>${scm.revision}</SCM-Revision>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

そして、コントローラー/サーブレットからそれを読み取るには:

ServletContext application = getServletConfig().getServletContext();
InputStream inputStream = application.getResourceAsStream("/META-INF/MANIFEST.MF");
Manifest manifest = new Manifest(inputStream);
Attributes attr = manifest.getMainAttributes();
String value = attr.getValue("SCM-Revision");
于 2012-08-27T18:19:10.893 に答える
2

プロパティを設定するbuildnumber-maven-pluginを使用することをお勧めします(WAR の場合)。${buildNumber}MANIFEST.MF

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <archive>
      <manifestEntries>
        <SCM-Revision>${buildNumber}</SCM-Revision>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

その後、 java.util.jar.Manifestクラスを使用して読み取ることができます。jcabi-manifestsでそれを行う方法を見てみましょう。実際の例を次に示します (Git を使用しています): pom.xml。アプリケーションは Heroku: www.s3auth.comにデプロイされます。Web ページの右下隅にリビジョン番号が表示されます。

于 2012-08-27T19:39:17.183 に答える