使用Jenkins Artifactory插件,我能够将这两个模块的JAR发布到Artifactory,但我的另一个依赖于lib
的项目未能构建,出现以下gradle错误
找不到com.mygroup:lib-api:1.0.0-snapshot
lib-api/build.gradle
apply plugin: 'java'
apply plugin: 'maven-publish'
group = 'com.mygroup'
version = project.version
publishing {
publications {
api(MavenPublication) {
from components.java
}
}
}
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
android { ... }
dependencies {
compile project(':lib-api')
}
group = 'com.mygroup'
version = project.version
+-- libs-snapshot-local
| +-- com
| | +-- mygroup
| | | +-- lib
| | | | +-- 1.0.0-SNAPSHOT
| | | | | `-- lib-1.0.0-20150508-1.jar
| | | | | `-- lib-1.0.0-20150508-1.pom
| | | | | `-- maven-metadata.xml
| | | | `-- maven-metadata.xml
| | | +-- lib-api
| | | | +-- 1.0.0-SNAPSHOT
| | | | | `-- lib-1.0.0-20150508-1.jar
我的理解是,ArtiFactory/Gradle应该足够聪明,能够将-snapshot
解析为最新的时间戳快照,这似乎可以从以下事实中得到证明:无论我指定latest.integration
还是1.0.0-snapshot
,它都能够解析lib
如何让gradle从ArtiFactory解决这种传递快照依赖关系?或者让artifactory插件以gradle可以解决的方式发布jar?
工作理论
artifactory的Jenkins插件将gradle artifactory插件用于支持Gradle-Artifactory集成的工作。根据gradle artifactory插件文档,插件ID的变化取决于您使用的是新的(maven-publish)还是旧的(maven)发布机制。
这会是问题所在吗?Artifactory插件是否应用了错误的插件ID,可能是因为它基于android库模块做出了决定?
TL;Dr切换到gradle的旧maven插件修复了它。
我的lib-api/build.gradle
现在看起来如下所示
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.mygroup'
version = project.version
ext.artifactId = project.name.toLowerCase()
project.archivesBaseName = project.artifactId
uploadArchives {
repositories {
mavenDeployer {
pom.artifactId = project.artifactId
}
}
}
注意:根据Maven
插件的gradle文档,如果设置了archivesBaseName,则必须显式定义pom.artifactid
。这可能是我以前配置的根本问题,但我没有回去测试它。
删节依赖关系报告
问题内容: 我调查了一段时间,可能在这里看到了与aar和可传递依赖项有关的最受欢迎的答案,但是对于我来说,如何使它起作用仍然不清楚。 所以: 我有给定gradle配置的android库: 然后,我将其部署到本地Maven存储库gradle install。部署库的POM文件如下所示: 最后使用上述库作为依赖项对我的Android应用程序进行配置: 在手机上部署应用程序后,我得到了属于我的Andro
我在Liferay DXP中为Google Analytics API编写了代码。我已经通过在build.gradle中编写来导入了以下jar 此外,我还使用以下代码将其包含在bnd.bnd文件中: 该模块编译良好,我能够得到JAR。但是当我在服务器上部署这个jar时,我总是得到未解决的需求:import-package:error。 我知道问题出在传递依赖上。我在Liferay社区的某个地方读到
通过使用Jenkins的阿蒂工厂插件和Gradle,我能够成功地部署到我的阿蒂工厂实例。但是,我无法使用进入Jenkins配置的凭据从同一个存储库解析工件。 以下是,取自Artifactory中Artifactory的“生成构建脚本”功能。 错误: 在本地,解析工件是有效的(等都被解析了,因为我在本地中配置了它们)。但是,构建失败,因为未定义。当然,我可以配置供詹金斯使用(这是可行的),但这应该如
我已经研究了一段时间,可能看到了与aar和传递依赖相关的最流行的答案,但不知何故,我仍然不清楚如何使其工作。 所以: 根据上述树,不检测所有的传递依赖。问题出在哪里,该如何正确做?
null