Hwe*_*wee 10 stack-overflow maven maven-assembly-plugin
嗨,stackoverflow的居民,
我遇到了maven的问题,特别是在装配阶段.我有一个大型多模块遗留项目,遗憾的是在其子模块中有一些循环引用.它已被改装为使用maven构建,但重构循环引用将花费太长时间.
通过运行mvn install可以很好地构建项目,甚至可以毫无问题地运行mvn包,但是在运行mvn package assembly:assembly时会失败.尝试使用程序集运行它:单个给我一个构建失败,因为"创建程序集存档distrib时出错:你必须至少设置一个文件".
使用assembly:assembly,它似乎一遍又一遍地处理相同的库,最终抛出stackoverflower错误.我猜这意味着模块中的循环引用正在引起这种情况,尽管因为它没有任何问题,我希望它能够在组装过程中存活下来.
还有其他原因吗?
该项目的结构如下:
Parent
|_ Child1
|_ Child2
|_ dist-proj
Run Code Online (Sandbox Code Playgroud)
父pom有以下部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly-dependencies.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<modules>
<module>Child1</module>
<module>Child2</module>
<module>dist-proj</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
分歧:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>dist-proj</id>
<phase>assembly</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly-dependencies.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
和汇编文件:
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>groupid:Child1</include>
<include>groupid:Child2</include>
</includes>
<binaries>
<outputDirectory>${project.build.finalName}</outputDirectory>
<unpack>false</unpack>
<dependencySets>
<dependencySet>
<includes/>
<scope>compile</scope>
</dependencySet>
<dependencySet>
<includes/>
<scope>runtime</scope>
<useTransitiveFiltering>true</useTransitiveFiltering>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.
Mar*_*ler 15
我也遇到过这个错误.查看Plexus Archiver源代码,每次遇到它已经看到的类或工件时,AbstractArchiver中的getResources返回的hasNext方法都会调用自身.这导致它即使在中型项目上也会耗尽堆栈空间.
目前最简单的解决方法是通过MAVEN_OPTS增加堆栈空间,例如
export MAVEN_OPTS=-Xss2m
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参见http://jira.codehaus.org/browse/MASSEMBLY-549
要仅创建一个包含所有依赖项的 jar,您只需使用预定义的描述符即可。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8586 次 |
| 最近记录: |