- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在尝试将新版本部署到我公司的 JFrog.io(原名:ArtifactoryOnline.com)存储库时遇到了一个奇怪的错误。我正在处理的项目有多个 Maven 模块,都在一个父模块下。当我将 maven 构建的 JAR 文件上传到 JFrog 时,生成的 POM 文件被填充了不正确的父 artifactId。
我花了很多时间并没有发现我公司的项目代码库有任何问题,所以我决定是否可以从头开始重现错误。因此我做了this throwaway project来演示错误。对于那些对下载完整项目不感兴趣的人,这里是相关的 POM 文件:
父 POM,“蓝莓”:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.nbyrd</groupId>
<artifactId>blueberry</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>blueberryjam</module>
<module>berries</module>
</modules>
</project>
从属 POM 1:“浆果”:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blueberry</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>berries</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
从属 POM 2,“berry-jam”:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blueberry</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blueberry-jam</artifactId>
<dependencies>
<dependency>
<groupId>org.nbyrd</groupId>
<artifactId>berries</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
(值得一提的是,所有这些 POM 文件都是由 JetBrains IntelliJ 完整生成的。)
此时非常简单:我有两个 Maven 模块——“berries”和“berry-jam”——位于中央父模块“blueberry”下。 berry-jam 使用 berries 作为依赖项,但我不确定这是否与问题相关。
当我构建项目时,我得到两个 JAR 文件:berries-1.0.jar
和 berry-jam-1.0.jar
。这符合预期。此时,我会将这些 Artifact 上传到 Artifactory,以便其他项目可以引用它们。这就是麻烦开始的地方。当我上传 berries-1.0.jar
时,Artifactory 生成以下 POM 文件:
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>berries</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>berries</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
如您所见,生成的 POM 将父 artifactId 定义为“berries”,这是错误的。同样的问题出现在我上传berry-jam-1.0.jar
时:
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blueberry-jam</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blueberry-jam</artifactId>
<dependencies>
<dependency>
<groupId>org.nbyrd</groupId>
<artifactId>berries</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
在这两种情况下,我都希望 parentId 是“blueberry”,因为它在两个子模块的 POM 文件中都有明确说明。这些不正确的 artifactId 导致无法使用这些库。如果第三方应用程序尝试使用这些库,maven 在下载依赖项时会产生以下警告并且构建失败:
[WARNING] The POM for org.nbyrd:berries:jar:1.0 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
这个功能过去在上传到 Artifactory 时可以正常工作,所以我不确定工具的工作方式是否发生了变化,或者我只是做错了什么。有什么想法吗?
最佳答案
当您使用mvn deploy
时,maven 将pom.xml
文件部署为单独的 Artifact 。但是当您使用 artifactory 的 web ui 上传 jar 文件并要求 artifactory 生成 pom 文件时,我猜它是根据 jar 中存在的数据生成的。所以 Artifactory 不知道父项目的存在。
关于java - Artifactory/JFrog 在生成的 POM 中生成错误的父 artifactId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45946539/
例如,如果运行 1 正在等待批准并触发运行 2,则应拒绝运行 1。 最佳答案 “待批准”状态具体来自 Approval Gates功能。 虽然您不能在触发新运行时明确拒绝“待批准”步骤,但您可以通过在
是 the registry JFrog 产品组合的支点还是某些附加功能?无论哪种方式,该功能都非常有趣,但了解细节会很好。 最佳答案 简而言之,JFrog Container Registry 是
我正在尝试使用 CLI for Jfrog Artifactory 从 Bamboo CI 上传 Artifactory 我需要上传 .p2 插件,我有两个选择: 上传 .zip 并将其部署为 Bun
我们正在使用 JFrog artifactory 4.1.0。从他们的文档(https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+
jfrog-cli 中的错误:尝试加密您的密码时收到以下错误 最佳答案 config 命令尝试使用不正确的 URL 加密您的 Artifactory 密码。通常,当用户提供 JFrog 平台 URL
我正在尝试从 jfrog artifactory 的存储库列表中删除工件(超过 6 个月)。我正在创建一个如下所示的规范文件,并使用我要使用 jfrog cli 删除的规范。我的查询是有什么方法可以在
我有一个Java应用程序,它使用一个名为com.abc.XYZLogging的自定义库。 该库依赖于org.springframework:spring-context:4.3.7.RELEASE和o
我为gradle创建了默认存储库,并将jar发布到其中。在JAR说明页面上没有看到带有依赖项声明的代码片段。怎么了? 最佳答案 如果您使用的是右上角的“部署”选项。我发现您需要在“依赖声明”显示之前定
我正在使用JFrog作为Docker注册表。 如果我尝试手动拉出图像,则可以正常工作,但是当我通过在helm chart和helm install命令中进行尝试来进行相同操作时,会抛出错误: Erro
你能帮我使用 JFrog Artifactory 证书功能吗? (管理员 -> 证书)。 我想为 Maven 存储库添加证书 ( https://plugins.jenkins.io/reposito
我目前正尝试在 Artifactory 中查询与核心项目相关的特定 Artifactory 。所有 Artifactory 都将以项目标签为前缀。示例:“proj1-core”。我使用 Artifac
我在 Ubuntu 上运行它。当我尝试运行时:npm install -g jfrog-cli-go 我明白了: 当我尝试使用 curl 运行它的其他选项时,它给人的感觉就像它成功但是当我尝试运行时
有人可以解释一下 JFrog Artifactory 中这 3 种类型的本地、远程和虚拟存储库是什么。 ,我没有从 JFrog Artifactory 文档中清楚地了解它。 https://www.j
当我下载,解压缩并启动artifactory.sh时,看到以下错误 2020-02-26T21:32:50.496Z [jfac ] [ERROR] [c1b4de79a3f11666] [.j.a.
我手动将FGE-0.3.zip部署(单击Web上的按钮)到lib-release,而没有pom文件。由于某种原因,我检查了Suppress POM Consistency Checks的lib-sna
我为 gradle 创建了默认存储库并将 jar 发布到其中。我在 JAR 描述页面上没有看到带有依赖声明的片段。 我只添加了一个本地存储库。我错过了什么? 最佳答案 您的文件似乎没有按照 Maven
将图像推送到JFrog人工项目docker注册表后,我想通过REST API获取图像大小,是否为此使用任何API? 最佳答案 您可以使用Artifactory REST API查询Artifactor
在 Jfrog Artifactory 中,我创建了一个只读用户并尝试访问远程 NPM 包,该包是 NodeJS 存储库的一部分。例如npm install @angular/material 并且软
在 Jfrog Artifactory 中,我创建了一个只读用户并尝试访问远程 NPM 包,该包是 NodeJS 存储库的一部分。例如npm install @angular/material 并且软
我有一个关于 Jfrog Artifactory 的问题。 我不知道它是做什么用的。你能用实际的方式给我解释一下吗? 提前致谢! 最佳答案 来自 artifactory 的标签描述: Artifact
我是一名优秀的程序员,十分优秀!