2013-11-27 68 views
1

我试图将一些groovy(gradle)代码转换为maven。在可能的情况下,我们试图使用现成的插件而不是自定义的插件。maven assembly插件:对目录的控制

我们想使用maven assembly插件来组装一个我们将用于部署的tar文件。目录结构对我们的部署工具非常重要,我似乎在争取让maven去做我想做的事情。

最底层代码片段的关键问题在于jar文件以tar文件中的target目录结尾。我的问题是:这可以避免吗?还是应该削减我的损失,并写一个简单的自定义插件来做到这一点?

(其可能我把2和2在一起并得到5,但它似乎与此相关的错误here

目录结构

. 
└── project1 
    ├── config 
    │   └── foo.config 
    ├── pom.xml 
    ├── src 
    │   └── main 
    │    ├── assembly 
    │    │   └── assembly.xml 
    │    └── java 
    │     └── com 
    │      └── foo 
    │       └── bar 
    │        └── App.java 
    └── target 
     ├── archive-tmp 
     ├── classes 
     │   └── App.class 
     ├── maven-archiver 
     │   └── pom.properties 
     ├── my-static-jar-name-bundle.tar 
     └── my-static-jar-name.jar 

大会文件(运行构建之后) tar文件的

<assembly> 
    <id>bundle</id> 
    <formats> 
     <format>tar</format> 
    </formats> 
<includeBaseDirectory>false</includeBaseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>${basedir}</directory> 
      <outputDirectory>/spooge</outputDirectory> 
     <includes> 
       <include>**/*.jar</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/config</directory> 
      <outputDirectory>appconfig</outputDirectory> 
     <includes> 
       <include>**/*.config</include> 
      </includes> 
     </fileSet> 
</fileSets> 
</assembly> 

内容时构建已经完成(注意罐子是一个“目标”子文件夹)

tar xvf project1/target/my-static-jar-name-bundle.tar 
x spooge/target/my-static-jar-name.jar 
x appconfig/foo.config 

回答

1

尝试改变文件集,如下所示:

<fileSet> 
    <directory>${project.build.directory}</directory> 
    <outputDirectory>/spooge</outputDirectory> 
    <includes> 
     <include>**/*.jar</include> 
    </includes> 
</fileSet> 

它的当前配置,装配插件搜索project1的整个目录的任何jar文件的方式。它发现的唯一一个是在target目录中,所以Maven很高兴地将它包含在tar中。我建议的改变使用project1/target作为起点,所以我认为你会得到你想要的结果。

+0

辉煌,谢谢! – phatmanace