對於戰爭的路徑,你可以使用內置的Maven的特性:
${project.build.directory}/${project.build.finalName}.${project.packaging}
你要設置爲自定義的Maven屬性的部署路徑。有幾種方法可以做到這一點。一個是在POM直接設置,就像這樣:
<properties>
<deploy.path>C:/Softwares/apache-tomcat-6.0.33/webapps/Test.war</deploy.path>
</properties>
然而,這仍是硬編碼的路徑在POM,只是一個變量。
另一種方法是使用properties-maven-plugin來讀取屬性文件。這將用戶特定的設置保留在pom外,並且可以使屬性文件不受源代碼管理。然而,這不是首選的Maven做事方式,而且這個插件可能在未來的版本中不再支持。
Maven的方法是將您的部署路徑存儲在〜/ .m2/settings.xml文件中。該屬性將放入配置文件中,該配置文件可以默認爲活動狀態。有關說明,請參見this page。
一旦你有你deploy.path變量設置,更改複印聲明是這樣的:
<copy file="${project.build.directory}/${project.build.finalName}.${project.packaging}"
tofile="${deploy.path}" />
編輯:
在一個小例子項目中,下列屬性都設置爲我:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<configuration>
<target>
<echo message="project.build.directory: ${project.build.directory}"/>
<echo message="project.build.finalName: ${project.build.finalName}"/>
<echo message="project.packaging: ${project.packaging}"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
如果這些屬性沒有爲您設置,您可以發佈您的pom.xml嗎?
感謝Shane,如上所述我將使用deploy.path作爲目標目錄,我們如何指定源目錄?因爲如果我回聲project.build.directory它的null,那麼是否有指定源目錄的任何屬性? – Pawan
project.build.directory,project.build.finalName,project.packaging和其他各種屬性應該自動定義。有關完整列表,請參閱http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-properties.html。看到我的編輯上面的故障排除... – Shane
我已經在評論中找到了我的問題的答案(我們應該使用source.path)。感謝謝恩給我的出發點。 – Pawan