1

buildnumber-maven-plugin を使用して、最新の github コミットのビルド番号を生成された war の名前に追加しています。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <warName>${project.artifactId}-${buildNumber}</warName>
    <webResources>
      <resource>
        <directory>${project.basedir}/src/main/webapp/WEB-INF</directory>
        <filtering>true</filtering>
        <targetPath>WEB-INF</targetPath>
      </resource>
    </webResources>
  </configuration>
</plugin>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>buildnumber-maven-plugin</artifactId>
  <version>1.2</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>create</goal>
      </goals>
   </execution>
  </executions>
  <configuration>
   <doCheck>false</doCheck>
    <doUpdate>false</doUpdate>
    <shortRevisionLength>6</shortRevisionLength>
  </configuration>
</plugin>
<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>${jetty.version}</version>
  <configuration>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <war>target/${project.artifactId}-${buildNumber}.war</war>
    <webApp>
      <contextPath>/hope</contextPath>
      <descriptor>${basedir}/target/WEB-INF/web.xml</descriptor>
    </webApp>
    <connectors>
      <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <port>8080</port>
        <maxIdleTime>60000</maxIdleTime>
      </connector>
    </connectors>
  </configuration>
</plugin>

これにより、コミット ID の最初の 6 文字で .war ファイルが正しく作成され、実行時にも正常に動作しmvn jetty:runます。ただし、実行するmvn jetty:run-warと、次の出力が得られます。

[INFO] Webapp assembled in [160 msecs]
[INFO] Building war: /home/jon/Projects/hope/hope/hope-web/target/hope-web-b242c0.war
[INFO] 
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ hope-web ---
[INFO] 
[INFO] <<< jetty-maven-plugin:9.0.5.v20130815:run-war (default-cli) @ hope-web <<<
[INFO] 
[INFO] --- jetty-maven-plugin:9.0.5.v20130815:run-war (default-cli) @ hope-web ---
[INFO] Configuring Jetty for project: Website
[INFO] Context path = /hope
[INFO] Tmp directory = /home/jon/Projects/hope/hope/hope-web/target/tmp
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
2013-10-29 12:49:34.920:INFO:oejs.Server:main: jetty-9.0.5.v20130815
2013-10-29 12:49:34.934:WARN:oejw.WebInfConfiguration:main: Web application not found /home/jon/Projects/hope/hope/hope-web/target/hope-web-${buildNumber}.war
2013-10-29 12:49:34.934:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.m.p.JettyWebAppContext@c638285{/hope,null,null}{/home/jon/Projects/hope/hope/hope-web/target/hope-web-${
buildNumber}.war}
java.io.FileNotFoundException: /home/jon/Projects/hope/hope/hope-web/target/hope-web-${buildNumber}.war

したがって、そのプロセスがコミット ID を使用して .war ファイルをビルドしても、jetty は buildnumber プラグイン プロパティ名を使用して war ファイルを探します。

これらのプラグインが相互に連携するように構成するにはどうすればよいですか?

4

1 に答える 1

0

ジョン、

これが可能になるかどうかはわかりません。

jetty:run-war ゴールは、war が確実にビルドされるように並列ビルド実行をフォークします (つまり、mojo には @execute phase="package" があります)。pom 内の ${buildNumber} の置換は、そのフォークされた実行に対して発生します。jetty-maven-plugin を実行している実行の代わりになるようには見えません (2 回目の実行と同じ方法で計算されると仮定します)。その理由はわかりませんが、jetty-maven-plugin を変更して、その実行を表す MavenProject によって認識されるすべてのプロパティを出力すると、buildNumber は存在しません。ただし、フォークされた MavenProject によって表されるプロパティには存在します。buildnumber-maven-plugin プロジェクトに質問することがありますか?

ところで、設定して例を少し変更してみました: <finalName>${project.artifactId}-${buildNumber}</finalName>

つまり、maven-war-plugin 設定から <warName> を削除できます。jetty-maven-plugin の実行の <finalName> 値も設定されることを望んでいましたが、そのような運はありませんでした。

乾杯ジャン

于 2013-11-28T05:10:22.607 に答える