maven程序集插件:控制目录

时间:2013-11-27 22:49:37

标签: maven

我正在尝试将一些groovy(gradle)代码转换为maven。在可能的情况下,我们尝试使用现成的插件而不是自定义插件。

我们想使用maven程序集插件来组合我们将用于部署的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

装配文件

<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文件的内容(注意jar在'target'子文件夹中)

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

1 个答案:

答案 0 :(得分:1)

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

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

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