我目前正在使用一个遗留应用程序,其构建插件的过程需要添加对大约150个非maven的依赖项(我相信吗?)jar文件。理想情况下,我希望将这150个JAR打包到一个单独的JAR中,将其放在Artifactory上,并将其用作maven依赖项,以便我的团队可以更轻松地设置他们的开发环境。
我一直在试验one-jar、maven-assembly-plugin和maven-shade-plugin,它们似乎只创建了一个包含多个其他jar的jar(即解压缩内容)。但是,在将jar作为maven依赖项添加时,maven似乎无法解析这些“子jar”中的内容/依赖项。
下面的代码只是我尝试过的一个示例;因此,请随意建议其他方法。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>some-jars</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>someName</name>
<properties>
<jdk.version>1.8</jdk.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.mycompany.mypackage.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.dstovall</groupId>
<artifactId>onejar-maven-plugin</artifactId>
<version>1.4.4</version>
<executions>
<execution>
<configuration>
<binlibs>
<fileSet>
<directory>${basedir}/jars</directory>
<includes>
<include>*</include>
</includes>
</fileSet>
</binlibs>
<!-- Optional, default is false -->
<attachToBuild>true</attachToBuild>
<!-- Optional, default is "onejar" -->
<classifier>onejar</classifier>
</configuration>
<goals>
<goal>one-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>onejar-maven-plugin.googlecode.com</id>
<url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
</pluginRepository>
</pluginRepositories>
</project>发布于 2015-04-15 05:37:25
也许您可能想要考虑Spring IO Platform (http://platform.spring.io/platform/#quick-start)采用的BOM方法,JBoss JavaEE6规范在Maven中的依赖项(http://www.andygibson.net/blog/quickbyte/jboss-java-ee-6-spec-dependency-in-maven/)
通过使用BOM方法,不需要将所有库捆绑到单个jar中。
发布于 2015-04-15 05:57:53
不久前我也遇到过同样的问题
出于这个原因,我实现了maven-bulk-deploy,这使得实现物料清单方法变得更容易
只需将jars放在一个文件夹中,选择一个common-group-id/version (例如,与您的主项目相同)运行插件,它将创建一个BOM文件(即pom ),并将部署您的资产存储库中的所有jars
请随时签出/分叉该项目以尝试解决您的问题
https://stackoverflow.com/questions/29637647
复制相似问题