簡體   English   中英

JDK9 自動模塊和“拆分包”依賴項

[英]JDK9 Automatic Modules and "Split Packages" Dependencies

我正在轉換一個 java 項目以使用模塊。 我的一個模塊依賴於hamcrest庫,它需要兩個 jar 文件hamcrest.corehamcrest.library 這兩個 jar 文件都有org.hamcrest包。 因此,當我的模塊想要將這兩個 jar 視為自動模塊時,它會失敗,因為模塊路徑中的兩個模塊不能有同名的包。 我搜索了很多,在stackoverflow上找到了一些相關的東西。 如果我不想重建這些依賴項,我似乎有兩個合理的選擇:

  1. 使用我的構建自動化工具(maven)將兩個 jar 合並為一個 jar。
  2. 以某種方式告訴 java 編譯器,這兩個 jar 應該被視為單個自動模塊。

所以這里是我的問題:

  • 這兩個選項中的任何一個都可能嗎? 如果是,如何?
  • 有沒有更好的選擇?

提前致謝

好的,我終於設法解決了這個問題:

  1. 創建一個名為hamcrest-all的新 maven 模塊,並添加對hamcrest-corehamcrest-library依賴。
  2. maven-assembly-plugin添加到此模塊, appendAssemblyId設置為 false。
  3. 從其他 maven 模塊中刪除對hamcrest-corehamcrest-library依賴,而是添加對hamcrest-all依賴。
  4. 當包含對hamcrest-all依賴時,排除hamcrest-corehamcrest-library

它的實際作用是將hamcrest-corehamcrest-library解壓到為hamrest-all創建的 jar 文件中。 並且因為每個 jar 文件都被 JMPS 視為一個模塊,所以問題消失了:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM