2014-05-05 104 views
2

我将项目从Maven 1升级到Maven 3.它工作正常,但我还有其他一些问题。 Maven 3没有像下面这样的“属性”标签;Maven:通过属性复制依赖项

<dependency> 
    <groupId>commons-logging</groupId> 
    <properties> 
     <cdstool.bundle>true</cdstool.bundle> 
     <war.bundle>true</war.bundle> 
    </properties> 
</dependency> 

但要做出释放我需要知道需要什么,其依赖的时候,所以我可以将它们复制到我的release文件夹相关的文件夹。

这是Ant从以前的Maven 1版本创建发行版的目标,它通过检查它们的“属性”将某些依赖项复制到特定的文件夹下面是一个示例,但是有超过1个目标目录,被复制

<j:forEach var="lib" items="${pom.artifacts}"> 
     <j:set var="dep" value="${lib.dependency}"/> 
     <j:if test="${dep.getProperty('cdstool.bundle')=='true'}"> 
      <ant:copy failonerror="true" todir="${maven.build.dir}/cdstool"> 

      </ant:copy> 

     </j:if> 
    </j:forEach> 

如何在不使用Ant的情况下在当前的Maven 3项目中执行此操作?

首先,我需要知道依赖项属性,所以我知道什么TI复制到哪里,哪些在我当前的pom依赖项中缺少,因为没有属性标记。然后我需要使用Maven Assembly插件将它们复制到我想要的文件夹中。

+0

这是一个有趣的问题,我没有直接的答案。我最初的直觉是读入Maven assembly插件;我敢肯定,你应该使用它来控制最终在可部署工件中的什么位置。可能没有简单的过渡要做,你必须找到一种获得相同结果的新方法。 – Gimby

+0

@Gimby dank je wel! – Spring

回答

0

我建议您为每个包创建一个单独的程序集,然后在每个程序集中包含或排除所需的相关性。

+0

tnx但你的答案太短了,如果我能知道如何包含或排除目录中给出的依赖关系,我就已经在做它了。他们没有物业,所以我不能检查 – Spring