对不起,如果这似乎是一个愚蠢的问题。但我是Java和Gradle的初学者,我真的遇到了Gradle Docs'有时。
我只想找到一种简单的方法来重用我项目的build.gradle
文件中的代码。因此,将此代码打包到一个插件中,该插件在我的公司仓库中上传和版本化似乎是理想的。但是这些独立插件是java/groovy
projects/programs
,其语法与gradle DSL不同。所以他们没有像gradle.build文件那样提供相同的可能性和闭包,对吗?
例如,如果我想要一个可重用的存储库闭包,看起来像这样:
repositories {
maven {
url project.Repo_GP_Internal
credentials {
username project.Repo_GP_User
}
}
}
或uploadArchives闭包:
uploadArchives {
repositories {
mavenDeployer {
repository(url: Repo_Upload_Internal){
authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass)
}
snapshotRepository(url: Repo_Upload_Snapshot){
authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass)
}
}
}
}
我可以将这个以任何方式打包到一个插件中,该插件可以作为jar上传到我的仓库吗?正如您所看到的那样,关于配置阶段的代码。
提前谢谢。
答案 0 :(得分:1)
您绝对可以在插件中使用build.gradle中可用的所有功能。
build.gradle文件基本上只是一个groovy脚本,项目对象设置为委托,你在其中使用的大多数魔术词(如task
)只是Project类的方法。最重要的区别是,在您的自定义插件或任务中,您必须明确地与项目进行交互。
这样的事情可以解决问题:
class MyPlugin implements Plugin<Project> {
void apply(Project project) {
project.repositories {
maven {
url project.Repo_GP_Internal
credentials {
username project.Repo_GP_User
}
}
}
}
}
对于repositories
闭包内可用的方法,请参阅documentation for RepositoryHandler
当然,您的项目将如何访问您的插件仍然存在问题。例如,它可能是从maven存储库中检索它,在这种情况下,您需要在每个项目中明确定义带有maven存储库参数的buildscript { repositories {
。
答案 1 :(得分:0)
在我努力从gradle.properties
文件中读取插件中的属性后,我想发布除了Andrei的答案之外的其他内容。这是代码:
Properties props = new Properties()
props.load(new FileInputStream("gradle.properties"))
然后您可以访问以下属性:props.Repo_GP_Internal