Maven 2 maven使用同一个jar的两个版本进行战争

Maven 2 maven使用同一个jar的两个版本进行战争,maven-2,war,Maven 2,War,Maven将axis-1.3.jar和axis-1.4.jar放在我的war的WEB-INF/lib中。 有人能解释一下如何告诉它只使用axis-1.4.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将axis-1.3.jar和axis-1.4.jar放在我的war的WEB-INF/lib中。 有人能解释一下如何告诉它只使用axis-1.4.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">
    <parent>
        <groupId>dummy</groupId>
        <artifactId>test-war</artifactId>
        <version>0.1</version>
    </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>dummy</groupId>
  <artifactId>war-part2</artifactId>
  <name>war-part1</name>
  <version>0.1</version>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>com.jaspersoft.jasperserver</groupId>
      <artifactId>jasperserver-ireport-plugin</artifactId>
      <version>2.0.1</version>
    </dependency>
  </dependencies>
</project>

Maven is 2.2.1

您可以在依赖项中排除某些依赖库:

<dependency>
  <groupId>com.jaspersoft.jasperserver</groupId>
  <artifactId>jasperserver-ireport-plugin</artifactId>
  <version>2.0.1</version>
  <exclusions>
    <exclusion>
      <groupId>axis</groupId>
      <artifactId>axis</artifactId>
    </exclusion>
  </exclusions>
</dependency>

com.jaspersoft.jasperserver
jasperserver ireport插件
2.0.1
轴
轴
然后maven将跳过这个依赖项


不过,您必须确保Jasper可以在您提供的库中找到所需的类。

这在工作中经常出现,90%的时间是由于有人(
或Eclipse的WTP
)将jar的副本放入
WEB-INF/lib
中,然后将其检查到版本控制中


您可能需要对此进行检查。

理论上,Maven应该处理依赖项或可传递依赖项中存在的工件版本的收敛。这里的问题是,
axis-1.4.jar
axis-1.3.jar
没有相同的
groupId
org.apache.axis
vs
axis
),因此Maven将它们视为不同的工件,并将它们都包括在内

如果您不想获得axis-1.3.jar,而只想获得axis-1.4.jar,则必须使用
排除
明确地从
jasperserver ireport插件
中排除不需要的依赖项:

<dependency>
  <groupId>com.jaspersoft.jasperserver</groupId>
  <artifactId>jasperserver-ireport-plugin</artifactId>
  <version>2.0.1</version>
  <exclusions>
    <exclusion>
      <groupId>axis</groupId>
      <artifactId>axis</artifactId>
    </exclusion>
  </exclusions>
</dependency>

com.jaspersoft.jasperserver
jasperserver ireport插件
2.0.1
轴
轴

虽然不能说jasperserver ireport插件是否能与axis-1.4.jar一起工作。

fwiw我已经在maven上工作了几个小时,因为我的war中有同一个jar的其他版本-在执行递归删除时一定要小心,但这就是最终清除它的原因

rm -fR ~/.m2/repository
mvn -U clean package
我的回购协议有些古怪,但不管它是什么,它总是回来,直到我做了武力更新-U


希望这对某人有所帮助

这就是我的答案!谢谢
rm -fR ~/.m2/repository
mvn -U clean package