我在java构建过程中使用maven。以下是一段代码,它创建一个包含所有依赖项的jar。为了减少对构建的小改动的数据传输,我想将所有项目文件(包括依赖项)放在文件夹target / build中。我计划使用运行应用程序的远程计算机rsync文件夹并使用以下命令运行应用程序:
java -cp target/build/* <classname>
如何修改此代码段以实现此目的?我已经阅读了这里的文档,但不知道如何将修复程序拼凑在一起:
http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:3)
您是否在询问如何让maven在构建时将依赖项复制到目标文件夹?
我认为你想要maven依赖插件。它将项目的依赖项复制到您指定的输出文件夹。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${targetDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
听起来你可能还需要maven jar插件来告诉它将你的jar打包到哪里。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>${dir}</outputDirectory>
</configuration>
</plugin>
答案 1 :(得分:1)
使用maven dependency plugin
它有gole:copy-dependencies
。这应该做你想要的。
示例(取自documentation)
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>