2016-05-10 37 views

回答

2

我不会使用任何这些解决方案。

就包括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或者安装阶段。这种方式总是发生在背景上,你不用担心。

+0

我怀疑它取得依赖关系的来源。 :( –

+0

现在它!:) –

相关问题