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