我试图通过从零管理(本地lib文件夹)迁移到本地管理系统(Archiva)来重新控制我们的项目所使用的依赖项。
我们的每个依赖项都驻留在一个单独的目录中,在结构上类似于Archiva创建的目录。一个单独的目录包含依赖项jar、源zip/jar、javadoc zip/jar和一个具有依赖项许可证的文本文件。构建过程需要后者,因为最终产品需要包含第三方许可证目录,其中所有依赖许可证都以文件(而不是URL)的形式收集。
我已经(在阅读了文档和试验/错误之后)设法正确地upload了依赖项的所有工件,除了它的许可证。当代表许可证的txt文件被上传时,我不能理解一个人应该如何指示这样的文件是用于依赖的许可证。
我尝试编辑依赖项的POM文件以包含许可信息,然后通过license-maven-plugin在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>但这是行不通的。如果我尝试这样做,插件会显示HTTP401错误。
--- 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项目中正确引用它们?
发布于 2017-10-11 20:59:59
Archiva中有一个特殊的Guest用户帐户,该帐户不需要用户名和密码即可进行身份验证。默认情况下,它将只对新的Archiva实例附带的内置存储库(快照和内部存储库)具有Repository观察者访问权限。存储库观察者角色基本上是对存储库和其中的工件的读取访问权限。
如果要通过完整的URL读取自定义本地存储库中的随机文件,而无需进行身份验证,则必须向Guest用户添加有关存储库的存储库观察者权限。
这样做可以让我绕过HTTP401错误,并使许可证插件在我的情况下工作,所以我的POM文件是完全正确的。
管理来宾(或任何其他用户)帐户的确切步骤在管理员指南的Manage Archiva Users一节中介绍。
但是,仍然不知道以这种方式处理许可证是否是一种好的做法。将它们保存在某个远程位置似乎更好,我假设这是基于POM文件中<licenses>属性的结构(仅限url,没有相对路径)。
https://stackoverflow.com/questions/46684030
复制相似问题