Maven :指定目录路径以选取文件并进行部署



我正在使用maven 2.2.1版本作为我的Java应用程序的构建工具。

有了这个Maven工具,我正在某个目录中构建战争文件并将其复制到服务器(Tomcat)

这适用于以下这些行

<copy file="D:/MyProject/target/Test.war"
tofile="C:/Softwares/apache-tomcat-6.0.33/webapps/Test.war" />

所有这些都工作正常.

在这里我的问题是,与其硬编码目录路径,我可以在其他地方指定吗?

我已经看到了src目录的这些project.build.directory和目标目录的project.build.outputDirectory,我们可以在文件中指定此属性名称吗?

请指导我,提前感谢。

对于战争路径,您可以使用内置的 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 文件中。此属性将位于配置文件中,默认情况下该配置文件可能处于活动状态。有关说明,请参阅此页面。

设置 deploy.path 变量后,将 copy 语句更改为如下所示:

<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吗?

最新更新