Использование buildnumber-maven-plugin с помощью jetty-maven-plugin
Я использую buildnumber-maven-plugin для добавления номера сборки из последнего коммита github к названию сгенерированной войны:
<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>
Это правильно создает файл.war с первыми 6 символами идентификатора коммита, а также отлично работает при запуске 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
Таким образом, даже несмотря на то, что этот процесс создает файл.war с идентификатором коммита, jetty ищет файл war с именем свойства плагина buildnumber.
Как мне настроить эти плагины для работы друг с другом?
1 ответ
Джон,
Я не уверен, что это будет возможно.
Цель jetty:run-war будет выполнять параллельную сборку, чтобы убедиться, что война построена (т.е. у mojo есть @execute phase="package"). Подстановка ${buildNumber} внутри pom происходит для этого раздвоенного выполнения. Похоже, он не заменяет выполнение, выполняющее модуль jetty-maven-plugin (при условии, что оно будет рассчитано так же, как и второй запуск). Не уверен, почему это так, но, конечно, если я изменю плагин jetty-maven-plugin, чтобы распечатать все свойства, известные MavenProject, представляющие его выполнение, buildNumber отсутствует. Однако он присутствует в свойствах, представленных разветвленным MavenProject. Может быть, стоит спросить о проекте buildnumber-maven-plugin?
Кстати, я даже попытался немного изменить ваш пример, установив:
Это означает, что вы можете удалить
ура Ян