【发布时间】:2015-11-25 15:36:33
【问题描述】:
我有一个包含多个不相关的 gradle 项目的工作区。我正在寻找一种方法,通过通用配置将工件插件应用于所有这些插件。
到目前为止,我尝试创建这个通用的 gradle 文件,并使用 apply from 将它应用到每个项目(顶级,而不是模块):
buildscript {
repositories {
maven {
url 'http://artifactory.mycompany.com/artifactory/plugins-release'
}
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
}
}
if (!project.plugins.findPlugin("com.jfrog.artifactory"))
project.apply(plugin: "com.jfrog.artifactory")
artifactory {
contextUrl = "${artifactory_contextUrl}"
publish {
repository {
repoKey = 'libs-release-local'
maven = true
}
}
resolve {
repository {
repoKey = 'libs-release'
maven = true
}
}
}
但我在构建时遇到以下错误:
A problem occurred evaluating script.
> Failed to apply plugin [id 'com.jfrog.artifactory']
> Plugin with id 'com.jfrog.artifactory' not found.
我怎样才能让这个方案发挥作用?
【问题讨论】:
-
构建脚本必须在多模块项目的根 build.gradle 文件中定义。子项目中的 buildscript 块被忽略。这可能是导致找不到插件的原因。
-
@BenManes Gretty 的(用于 gradle 的 tomcat/jetty 插件)似乎成功地做到了,但在我的情况下它不起作用。这是他们的“入门”指南:akhikhl.github.io/gretty-doc/Getting-started.html 他们建议在 build.gradle 中添加“应用自:'raw.github.com/akhikhl/gretty/master/pluginScripts/…'”以获取插件
-
是的,但这必须应用于根项目而不是子项目。我不确定这是否是您的问题,但这听起来与用户在设置我的插件时报告的错误相似。
-
特别是这让我想起了这个issue
-
@BenManes 是的,看起来确实很相似,但是我尝试将其应用到的项目是一个完全独立的 java 项目,它也可能是一个 gradle“HelloWorld”。它不是多项目构建的模块。
标签: java gradle build.gradle artifactory