我知道使用mvn dependency:sources
可以下载所有依赖项的源代码。通过mvn copy-dependencies
,可以将所有依赖关系下载到指定的本地目录中。如何将依赖关系源复制到maven中的某个目录
如何结合这两个,以便我可以将所有依赖项的源复制到一个目录?
我知道使用mvn dependency:sources
可以下载所有依赖项的源代码。通过mvn copy-dependencies
,可以将所有依赖关系下载到指定的本地目录中。如何将依赖关系源复制到maven中的某个目录
如何结合这两个,以便我可以将所有依赖项的源复制到一个目录?
我不会使用任何这些解决方案。
就包括Maven的dependeny-插件到Maven构建和调整配置,以您的需求:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<configuration>
<outputDirectory>/tmp/alternateLocation</outputDirectory>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>none</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/tmp/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
你可以改变几个项目,以满足您的需求,例如,在我的例子给你,我认为它直接给你一个解决方案,我已经指定在任何阶段都不需要在tmp文件夹中复制alternateLocation的依赖关系。但是我也在说我的新目标是复制依赖。如果您发现我现在有输出目录配置两次
mvn dependency:copy-dependencies
:那么在命令行中,这将是这样的。执行内部意味着它只会在您运行指定的Maven构建阶段时才会考虑,如包装,clean,测试,...。作为插件节点的第一个孩子兄弟,这意味着当命令行显式调用依赖插件时会考虑它,这就是你想要的。
你可以找到更多关于Maven的依赖插件的位置:
由于需要在同一时间的依赖关系和来源,我能想到的最好的办法是通过正常运行maven而不需要隐式调用实际的插件。如果您通过后清洁相运行(即MVN后清洁),它会运行以下两个目标:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<configuration>
<outputDirectory>/tmp/alternateLocation</outputDirectory>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>post-clean</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/tmp/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
<execution>
<id>sources</id>
<phase>post-clean</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<classifier>sources</classifier>
<outputDirectory>/tmp/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
它总是使复制到目标文件夹,但不会覆盖如果这些文件已经在那里。我不得不选择一个不常用的阶段。 后清洁似乎是这里最好的候选人。这只是想我想孤立这种构建。 后清理也清理构建。如果你只想每次构建时都继续使用这个插件,那么我会建议将它放在clean或者安装阶段。这种方式总是发生在背景上,你不用担心。
我怀疑它取得依赖关系的来源。 :( –
现在它!:) –