工作積累(十)——maven排除相關jar包依賴

maven 工程中引用到了一個 jar commons-io-2.4.jar,由於被引用的 jar 包依賴 hibernate-jpa-2.0-api ,而 hibernate-jpa-2.0-api 存在 bug ,會報出

Error: java.lang.NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index;

類似的錯誤。由於主工程同樣存在對 hibernate-jpa-2.0-api 的依賴,先將主工程的 pom.xml 修改,在 MyEclipse 中的 MavenDependencies 中發現仍然存在 hibernate-jpa-2.0-api-1.0.1.Final.jar 的引用,顯而易見,這個存在 bug hibernate-jpa 版本是由 commons-io-2.4.jar 依賴引入的,爲排除該依賴,在主工程的 pom.xml 文件中對依賴做如下修改:

修改前:

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.4</version>
</dependency>

修改後:

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.4</version>
  <!-- 添加排除tag -->
  <exclusions>
    <exclusion>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.0-api</artifactId>
    </exclusion>
    <!-- 和<dependency>tag相同,可以添加多個<exclusion>排除多個依賴 -->
   </exclusions>
</dependency>

 現在在 MyEclipse 中的 Maven Dependencies 中發現已經沒有了對 hibernate-jpa-2.0-api.jar  的引用。

 

 補充:

 如何發現 commons-io-2.4.jar 依賴 hibernate-jpa-2.0-api.jar ,通過 MyEclipse pom.xml  文件下的 Dependency Graph 視圖,如下圖所示:

 wKiom1WmO6rxV10LAAM1k69qxZo152.jpg

 通過 Dependency Graph 可以看出具體 jar 包依賴哪些其他 jar 包。

 

 完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章