Java Maven:如何将工件复制到特定目录?
“安装”目标将工件复制到目标目录和本地存储库Java Maven:如何将工件复制到特定目录?,java,maven,jboss,Java,Maven,Jboss,“安装”目标将工件复制到目标目录和本地存储库 我如何告诉Maven将其也复制到给定的目录(例如JBoss的deploy目录)。如果您想将文件复制到Web服务器(本地或远程),可以使用Maven upload plugin: <plugin> <groupId>com.atlassian.maven.plugins</groupId> <arti
我如何告诉Maven将其也复制到给定的目录(例如JBoss的deploy目录)。如果您想将文件复制到Web服务器(本地或远程),可以使用Maven upload plugin:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-upload-plugin</artifactId>
<version>1.1</version>
<configuration>
<resourceSrc>
${project.build.directory}/${project.build.finalName}.${project.packaging}
</resourceSrc>
<resourceDest>${jboss.deployDir}</resourceDest>
<serverId>${jboss.host}</serverId>
<url>${jboss.deployUrl}</url>
</configuration>
</plugin>
顺便说一下,对于远程部署,您可能需要scp的登录密码才能工作。您必须将它们添加到Maven settings.xml文件中:
<settings>
...
<servers>
<server>
<id>ENV_val</id>
<username>login</username>
<password>password</password>
</server>
</servers>
...
</settings>
...
环境
登录
密码
...
maven dependency插件的目标是实现您想要的,请参阅
然而,复制目标目录之外的任何内容(或者准确地说是${project.build.directory}
)不是一个好主意,尤其是如果这样的操作附加到构建阶段,因为它会引入构建的意外副作用,有时甚至会丢失再现性
正如@Andreas_D所指出的,对于JBoss部署目的,有一个更好的选择;类似地,部署到其他应用程序服务器。最好的方法是使用一个插件来实际部署您的应用程序,例如or(这一点归功于@Andreas\D) 这将是一种更好的使用拷贝或通用上传工具的方法,因为部署是您实际要做的事情 使用cargo插件,您可以选择。在构建过程中,我们采用这种方法在jetty中使用进行本地测试,并有一个概要文件可通过cargo按需部署到tomcat 注意:如果您的目标服务器(JBOSS)也本地安装在dev box上,那么您也可以在构建过程中使用cargo启动/停止服务器。这种方法的缺点是,您需要它来引用它在pom文件中的位置,因此所有开发人员要么将其安装在同一位置,要么将其安装在定义其位置的系统属性中(类似于JAVA_HOME)。根据需要,您可以将刚构建的工件复制到特定目录:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-installed</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
<outputDirectory>some-other-place</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
[...]
org.apache.maven.plugins
maven依赖插件
2.8
复制安装
安装
复制
${project.groupId}
${project.artifactId}
${project.version}
${project.packaging}
其他地方
[...]
对于jboss来说,不需要复制文件来部署目录-这是一个很好的解决方案。但是jboss“特殊maven插件”的可靠性有点令人怀疑。这相当于jboss maven插件的硬部署目标否决了这个答案,因为它没有回答OP提出的具体问题,这就是如何复制工件。OP并没有要求其他选择。
mvn upload:upload -Pdeveloppement
<settings>
...
<servers>
<server>
<id>ENV_val</id>
<username>login</username>
<password>password</password>
</server>
</servers>
...
</settings>
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-installed</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
<outputDirectory>some-other-place</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>