我的任务用于什么阶段?

时间:2011-07-06 17:27:06

标签: maven maven-3

我正在使用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>

3 个答案:

答案 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阶段。这将在编译完成 后实际执行