2011-11-29 35 views

回答

17

,如果你想与test范围或测试相关的罐子(test分类)排除罐子目前尚不清楚。无论哪种情况,dependency:copy-dependencies都有两个属性可以帮助您。

  • excludeClassifiers逗号要排除的分类符的分隔列表。空字符串表示不排除任何内容(默认)。
  • excludeScope要排除的范围。空字符串表示没有范围(默认)。
+7

感谢您的建议,我使用 compile,它的工作原理。谢谢。 – Mike

+2

@Raghuram Mike这里的确提出了一个观点,不能排除范围测试。请参阅http://stackoverflow.com/questions/5850788/filter-dependencies-copied-by-mavens-copy-dependency – Dudi

+0

我使用提供的'',传递依赖不会被复制为默认作用域,即使''为false –

19

Mike在上面的评论中回答了他们自己的问题。我认为Mike的用例与我想要复制我所依赖的所有jar以及我自己的jar相似,以便创建足以执行该程序的目录层次结构,而不必将这些依赖关系直接包含到我自己的jar中。

答案实现这一目标是:

<includeScope>compile</includeScope> 

该指令进入pom.xml中的Maven的依赖插件的部分。例如:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib</outputDirectory> 
       <includeScope>compile</includeScope> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

excludeScope不起作用,因为排除测试会中止构建并排除所有可能的作用域。相反,所包含的范围需要进行调整。

+0

使用' runtime'可能会更好,因为它复制了编译和运行时依赖关系。例如,如果使用SLF4J日志记录,那么'slf4j-api'将会是编译时间依赖性,而桥接器('jcl-over-slf4j','jul-to-slf4j')和后端(例如'slf4j -log4j12')将是运行时依赖关系。 – zwets

相关问题