如何使用Appassembler maven插件在程序集中包含工作区工件?

时间:2016-01-29 03:26:37

标签: maven spring-boot assemble appassembler

我在我的开发环境中使用Eclipse m2e,我有一个spring-boot maven项目(可以看作是一个标准的maven jar项目,在这个上下文中有可运行的主类),这取决于另一个maven项目相同的工作区(工作区工件,让我们称之为moduleB,spring-boot项目的兄弟),当我运行maven目标clean package时(appassembler:assemble目标可以省略,因为我配置插件的执行部分,参见下面的配置细节),目标目录中生成的程序集似乎很好,除了repo中缺少moduleB的jar。似乎插件试图根据日志复制moduleB中类文件夹下的每个文件:

...
[INFO] Installing artifact ...
[INFO] Installing artifact /foo/bar/moduleB/target/classes to /foo/bar/repo/groupid/artifactid/0.0.1-SNAPSHOT/moduleB-0.0.1-SNAPSHOT.jar
[INFO] Installing ...
...

如何解决这个问题?在运行汇编之前,我是否必须将moduleB安装到maven本地存储库中?有没有办法绕过这一步,因为我不想用不稳定的工件搞乱存储库。

P.S。插件的配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.10</version>
    <configuration>
        <configurationDirectory>conf</configurationDirectory>
        <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
        <copyConfigurationDirectory>true</copyConfigurationDirectory>
        <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
        <assembleDirectory>${project.build.directory}/someApp</assembleDirectory>
        <extraJvmArguments>-Xms128m</extraJvmArguments>
        <logsDirectory>logs</logsDirectory>
        <repositoryLayout>default</repositoryLayout>
        <repositoryName>repo</repositoryName>
        <showConsoleWindow>true</showConsoleWindow>
        <platforms>
            <platform>windows</platform>
            <platform>unix</platform>
        </platforms>
        <binFileExtensions>
            <unix>.sh</unix>
        </binFileExtensions>
        <programs>
            <program>
                <mainClass>someClass</mainClass>
                <id>app</id>
                <platforms>
                    <platform>windows</platform>
                    <platform>unix</platform>
                </platforms>
            </program>
        </programs>
    </configuration>
    <executions>
        <execution>
            <id>assemble</id>
            <goals>
                <goal>assemble</goal>
            </goals>
        </execution>
    </executions>
</plugin>

更新#1:

我绕过spring-boot:repackage目标,因为它将所有内容封装在一个jar中,包括我希望在生产环境中可以方便地编辑的配置文件。这是我之前提出的问题:Alternatives to distribute spring-boot application using maven (other than spring-boot:repackage)

0 个答案:

没有答案