从maven程序集中的maven依赖项中提取文件

时间:2014-08-07 14:02:42

标签: java maven maven-assembly-plugin

我的共享服务在名为bootstrapper的项目中启动和停止脚本(在脚本文件夹中)。该项目还有一些引导Java代码。

我有一个服务,它对bootstrapper项目有依赖性。我想让maven汇编会话进入bootstrapper jar,拉出启动和停止脚本并将它们放在服务二进制文件的根目录中(通过maven-filtering插件运行它们)

如果启动和停止脚本在服务项目中,我会这样做:

<fileSets>
    <fileSet>
        <filtered>true</filtered>
        <directory>${project.build.scriptSourceDirectory}</directory>
        <outputDirectory>/</outputDirectory>
        <fileMode>755</fileMode>
        <directoryMode>755</directoryMode>
    </fileSet>
</fileSets>

<dependencySets>
    <dependencySet>
        <fileMode>755</fileMode>
        <outputDirectory>/lib</outputDirectory>
        <useProjectArtifact>true</useProjectArtifact>
        <scope>runtime</scope>
    </dependencySet>
</dependencySets>

但是,它们位于bootstrapper项目中(需要留在那里)...所以如何在maven程序集中提取它们?

2 个答案:

答案 0 :(得分:1)

您可以在程序集插件中使用unpackOptions includes dependencySet来满足您的需求,请参阅:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

答案 1 :(得分:0)

为了扩展adamretter的答案,以下是我如何做到这一点的一个例子:

<dependencySet>
    <fileMode>755</fileMode>
    <includes>
        <include>mygroup:bootstrapper</include>
    </includes>
    <outputDirectory>/</outputDirectory>
    <outputFileNameMapping></outputFileNameMapping>
    <unpack>true</unpack>
    <unpackOptions>
        <includes>
            <include>start.sh</include>
            <include>stop.sh</include>
        </includes>
        <filtered>true</filtered>
    </unpackOptions>
</dependencySet>