Maven:如何将工件复制到特定目录?

“安装”目标将工件复制到目标目录和本地存储库。

我怎样才能告诉Maven将它复制到给定目录 (例如JBoss的deploy目录)。

maven-dependency-plugin的目标副本可以满足您的需求,请参阅示例 。

然而,复制目标目录之外的任何内容(或者精确地称为${project.build.directory} )并不是一个好主意 – 特别是如果此类操作附加到构建阶段,因为它会引入构建的意外副作用,有时甚至会失去再现性。

正如@Andreas_D所说,JBoss部署目的有一个更好的选择; 类似地,部署到其他appservers。

根据http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html,您可以将刚构建的工件复制到特定目录:

  [...]    org.apache.maven.plugins maven-dependency-plugin 2.8   copy-installed install  copy     ${project.groupId} ${project.artifactId} ${project.version} ${project.packaging}   some-other-place       [...]  

如果要将文件复制到Web服务器(本地或远程),可以使用Maven上传插件:

   com.atlassian.maven.plugins maven-upload-plugin 1.1   ${project.build.directory}/${project.build.finalName}.${project.packaging}  ${jboss.deployDir} ${jboss.host} ${jboss.deployUrl}   

要以智能方式配置参数,我使用maven配置文件:

    developpement  localhost appli/jboss-4.0.4.GA/server/default/deploy/ file://C:/     validation  ENV_val /home/envval/jboss/server/default/deploy/ scp://PROJECT_LAN_HOST    

我创建了一个“ant启动器”,通过单击Eclipse ant视图来使用它:

    

但您可以在命令行上运行它:

 mvn upload:upload -Pdeveloppement 

顺便说一句,对于远程部署,您可能需要登录密码才能使用scp。 您必须将它们添加到Maven settings.xml文件中:

  ...   ENV_val login password   ...  

最好的方法是使用一个实际部署应用程序的插件,例如货物或jboss-maven插件 (对于那个插件来说是@Andreas_D)。

这是使用副本或通用上载工具的更好方法,因为部署是您实际尝试执行的操作。

使用货物插件,您可以选择部署到各种正在运行的服务器 。 我们采用这种方法在构建期间使用jetty插件在jetty中进行本地测试,并根据需要通过货物部署到tomcat。

注意:如果您在开发箱上本地安装了目标服务器(JBOSS),那么您也可以在构建过程中使用货物启动/停止服务器。 这种方法的缺点是你需要它来引用它在pom文件中的位置,所以所有开发者都将它安装在相同的位置或系统属性中定义它所在的位置(类似于JAVA_HOME)。