我試圖通過從零管理(本地lib文件夾)遷移到本地管理系統(Archiva)來重新獲得對項目使用的依賴項的控制。使用Apache Archiva管理本地Maven存儲庫 - 許可
我們的每個依賴項都駐留在一個單獨的目錄中,與Archiva創建的結構類似。一個單獨的目錄包含依賴關係jar,源zip/jar,javadoc zip/jar和一個帶有依賴關係許可證的文本文件。構建過程需要後者,因爲最終產品需要包含第三方許可證目錄,其中所有依賴許可證均以文件形式(而不是URL)形式收集。
我有(在閱讀文檔和試驗/錯誤後)設法正確地upload所有依賴關係的工件,除了它的許可證。雖然表示許可證的txt文件已上傳,但我無法理解應該如何表明這樣的文件是依賴性許可證。
我試圖通過license-maven-plugin
編輯依賴的POM文件,包括許可信息,然後檢索它在Maven的:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>2.5.2</version>
<licenses>
<license>
<url>http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt</url>
</license>
</licenses>
</project>
但是,這是行不通的。如果我嘗試這個,該插件會發出HTTP 401錯誤。
--- license-maven-plugin:1.14:download-licenses (download-licenses) @ maventest ---
Unable to retrieve license for dependency: org.example:example
http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt
Server returned HTTP response code: 401 for URL: http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt
這似乎有點不直觀,我必須指定許可證的完整URL - 該文件是正確的有在服務器上旁邊的相關JAR依賴和POM文件本身(和他們不都下載未經授權的錯誤) - 但這是參數需要的。似乎許可證預計將託管在一些公開的外部網站上,而不是存儲庫本身。
明確指出在過程工程項目POM的依賴,只要下載雲:
<dependency>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>2.5.2</version>
<classifier>LICENSE</classifier>
<type>txt</type>
</dependency>
但是,這感覺不對 - 甚至不知道怎麼一會引用它在建造過程中,爲了複製到適當的地方。
如何正確處理由Archiva管理的存儲庫中的許可證工件?如何在他們的Maven項目中正確引用它們?
首先,您所做的假設與特許有關的許可證文件是錯誤的...許可證是在pom文件本身中完成的信息...您可以使用maven插件將許可證作爲構建結果以後...此外,我會建議使用像Nexus存儲庫經理 – khmarbaise
@khmarbaise,我不明白你的意見。從我的角度來看,我所做的完全是你所描述的:在POM文件中指定許可證信息,稍後使用插件將它們收集爲資源。我的問題中的最後一個XML代碼片段僅僅是爲了顯示所需的文件確實在存儲庫中 - 我無法像預期的那樣通過插件訪問它。我已經計劃看看Nexus,相當於Archiva。 – predi