我正在使用Maven 3.0.3。我想在打包WAR文件之前运行一个任务来复制特定于环境的属性。以下是我的任务。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete file="${project.build.outputDirectory}/environment.properties"/>
<copy file="src/main/resources/${env}_environment.properties"
tofile="${project.build.outputDirectory}/environment.properties" />
<delete file="${project.build.outputDirectory}/${env}_hibernate.cfg.xml"/>
<copy file="src/main/resources/${env}_hibernate.cfg.xml"
tofile="${project.build.outputDirectory}/hibernate.cfg.xml" />
<echo message="Copied ${env}_hibernate.cfg.xml properties. " />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
然而,当启动我的应用程序,通过运行“mvn -P tomcat tomcat:run”从我的Tomcat配置文件调用目标时,上述任务无法运行。任何想法我怎么能纠正这个?我包含的Tomcat配置文件如下。 - 戴夫
<profile>
<id>tomcat</id>
<activation>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<charset>UTF-8</charset>
<path>/leadsmonitor</path>
<server>nnadbmon-tomcat</server>
<update>true</update>
<url>http://nnadbmon.mydomain.com:8080/manager</url>
<warFile>target/leadsmonitor.war</warFile>
<systemProperties>
<JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:NewRatio=6 -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -verbose:gc"</JAVA_OPTS>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</profile>
答案 0 :(得分:0)
maven-antrun-plugin在prepare-package上运行,因此你可以将它添加到你的命令中:
mvn -P tomcat tomcat:run prepare-package
答案 1 :(得分:0)
来自tomcat:run的文档,
tomcat:run
在执行之前调用生命周期阶段 compile 的执行。
prepare-package
阶段稍后出现 - 在package
也许你应该试试tomcat:run-war。
tomcat:run-war
在执行之前调用生命周期阶段包的执行。
答案 2 :(得分:0)
您应该将其附加到compile
阶段。这将在编译完成 后实际执行 。