Web Java アプリケーションからフロントエンドへの http 応答を介してビルド番号を送信する必要があります。しかし、ビルド時にそれを設定するための最良かつ正しい方法は何ですか? 私は竹でmavenを使用しています。バージョン番号を maven に渡すことができることはわかっています。しかし、次のステップについてはわかりません。maven から ant を実行し、ant からプロパティ ファイルにバージョンを書き込み、java アプリからリソースを使用してそれを読み取ることしか考えていません。アドバイスをお願いします。ありがとう
3 に答える
バージョン ファイルの作成に問題はないと思います (私たちのプロジェクトではこのアプローチを使用しています)。${build.version}
ビルド時に何らかのプロパティ (fe) があることがわかっている場合は、フィルタリングを使用して目標を達成できます。
src/main/resources
1)以下の内容でバージョンファイルを作成
Version: ${build.version}
2) pom.xml に以下を追加します。
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
3) プロジェクトをビルドします。フィルタリングされたバージョン ファイルは に表示されtarget/classes
ます。
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");
プロパティを設定する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 ページの右下隅にリビジョン番号が表示されます。