fen*_*iix 5 java dependencies maven-2 jar
基本上我所拥有的是运行liferay门户的应用服务器.我们还有自定义portlet,它们共享自定义库以及第三方库.例如dwr-3.0,几个drools jar文件,spring-webmvc,spring等.
问题是这是服务器管理的噩梦,因为当有部署时,有人总是忘记服务器中的版本等.
我们使用maven 2,我想的是做一些像maven项目那样从父pom中提取依赖关系(使用dependencyManagement),默认目标是"解开所有依赖关系并将它们放在一个独特的jar中" .这样我们就会得到一个带有标准版本的独特jar,它与其他文件一起部署而不必部署.
如果可能的话,你们知道我怎么能这样做?我一直在使用maven-assembly-plugin而没有太大的成功.如果组装是要走的路,你有一个例子给我一个kickstart吗?
提前致谢
最后最好的解决方案是使用 maven-shade-plugin:
(snip)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<finalName>${artifactId}-${version}-tmp</finalName>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>full</shadedClassifierName>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
<exclude>log4j:log4j:jar:</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
(剪断)
阴影插件的厉害之处在于,当您包含重叠的类时,它会发出警告(一个例子是带有 aopalliance 类的 spring jar(完整的))