【发布时间】:2013-08-06 21:43:31
【问题描述】:
Stackoverflow 上已经有关于publishing pre built jars to Maven from Gradle 的问题。但是,这略有不同:如何将预构建的 Jar 发布到 Maven 存储库,同时提供要包含在 pom.xml 文件中的依赖项?
我有一个在此脚本外部预构建的 jar。我需要将此 jar 发布到我们的 Maven 存储库(Nexus)并在 pom.xml 中指定依赖项。我已经能够使用 artifacts 闭包将预构建的 jar 发布到 Maven 存储库,但它忽略了依赖项闭包。如果我添加 java 插件,那么 Maven 插件会创建一个带有依赖项的 pom,但会上传一个零字节的 jar 文件。我猜这是因为 Java 插件希望在 src 目录中编译和打包源代码,而这个项目中不存在。
有没有办法可以将预构建的 Jar“注入”到 Java 插件进程中,以便可以将 jar 与依赖项一起上传?还是我遗漏了其他明显的东西?
当然,最好的办法是让预构建 Jar 的构建过程概述其依赖项并上传到 Maven,但不幸的是,它是第 3 方软件,我们无法控制。
以下脚本发布一个零 kb jar 文件...
apply plugin: 'java'
apply plugin: 'maven'
jar = file(projectHome + '/build/lib').listFiles()[0]
configurations {
archives
runtime
}
dependencies {
runtime 'org.apache.tika:tika-app:1.3'
}
artifacts {
archives jar
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://build.com/nexus/content/repositories/releases/")
pom.version = tag
pom.artifactId = "artifact"
pom.groupId = "group"
}
}
}
非常感谢!抢
【问题讨论】:
-
您可以使用
mavenDeployerPOM DSL 添加依赖项(参见用户指南)。 -
谢谢彼得。实际上,我通过创建自定义插件使用完全不同的方法解决了这个问题。看到答案会很有用,因为我无法使用 POM DSL 让它工作。
标签: maven gradle nexus build-dependencies