Maven 构建在创建 jar-with-dependencies 时似乎覆盖了 类
Maven build appears to be overwriting classes when creating jar-with-dependencies
我正在使用 maven 构建一个带有依赖项的 jar。项目中的供应商 jar 文件之一具有类似的名称 类,但大小写不同。例如 aM.class 和 am.class.
当构建创建 "jar-with-dependencies" jar 文件时,只有 aM.class 存在。 am.class 似乎已被覆盖或跳过。每个类似命名的 类 文件都会发生同样的事情。
我们有几个解决方法,但我很好奇为什么 Maven 构建会以这种方式运行。谢谢
我的pom:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.mytest.MyTest</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<dependencies>
<dependency>
<groupId>com.bloomberglp</groupId>
<artifactId>blpapi3</artifactId>
<version>3.10.1</version>
</dependency>
</dependencies>
maven-assembly-plugin 会发生同样的class 冲突问题,这个插件将所有依赖 jar 提取到原始 classes,并将其分组 together.It 在项目中使用 less dependencies only,对于有很多依赖的大型项目,会导致Java class name conflict issue,检查here。
使用阴影插件中的 maven-shade-plugin if you have many jars with potentially could conflict. You can also you relocating 功能明确避免冲突的更好方法
我正在使用 maven 构建一个带有依赖项的 jar。项目中的供应商 jar 文件之一具有类似的名称 类,但大小写不同。例如 aM.class 和 am.class.
当构建创建 "jar-with-dependencies" jar 文件时,只有 aM.class 存在。 am.class 似乎已被覆盖或跳过。每个类似命名的 类 文件都会发生同样的事情。
我们有几个解决方法,但我很好奇为什么 Maven 构建会以这种方式运行。谢谢
我的pom:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.mytest.MyTest</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<dependencies>
<dependency>
<groupId>com.bloomberglp</groupId>
<artifactId>blpapi3</artifactId>
<version>3.10.1</version>
</dependency>
</dependencies>
maven-assembly-plugin 会发生同样的class 冲突问题,这个插件将所有依赖 jar 提取到原始 classes,并将其分组 together.It 在项目中使用 less dependencies only,对于有很多依赖的大型项目,会导致Java class name conflict issue,检查here。
使用阴影插件中的 maven-shade-plugin if you have many jars with potentially could conflict. You can also you relocating 功能明确避免冲突的更好方法