Mat*_*att 25 gradle maven-3 maven
我正在考虑将maven构建移植到gradle.maven的一个特性是pom继承,我可以在pom中声明各种常见行为,将其发布到存储库,然后通过<parent>具体项目中的元素使用它.
我的问题就是gradle中是否存在等效行为?
我以前在ant + ivy中通过导入一个公共的build.xml来完成这个任务,这个build.xml依赖于已经从源代码控制中检查了公共build.xml的位置或使用了类似svn:externals的东西.我可以毫无困难地重复这种方法,但这似乎是maven做得很好的一件事,所以在gradle中看到类似的东西会很高兴.
Pet*_*ser 20
有两种可能性:
将构建脚本发布到Web服务器,并将其包含在内 apply from: "http://path/to/script.gradle"
编写Gradle插件,将其作为Jar发布到Maven或Ivy存储库,并将其包含在:
buildscript {
repositories { .. }
dependencies "mygroup:myplugin:1.0"
}
apply plugin: "myplugin"
Run Code Online (Sandbox Code Playgroud)第二种选择更复杂,但也更强大.例如,插件Jars将被缓存,而远程构建脚本当前不会.一般来说,我建议从1.开始,然后移动到2.如果有必要的话.在未来,Gradle可能会提供一种机制,它结合了易用性1和2的优点.
Mat*_*att 14
我目前的解决方案是选项3; 将常用脚本作为资源打包到jar中,然后在buildscript部分中解压缩
buildscript {
repositories {
// enterprise repo here
}
dependencies {
classpath 'com.foo.bar:common-build:0.1.0-SNAPSHOT'
}
dependencies {
ant.unjar src: configurations.classpath.singleFile, dest: 'build/gradle'
}
}
apply from: 'build/gradle/common.gradle'
Run Code Online (Sandbox Code Playgroud)
这似乎做我想要的.
Pat*_*ner 13
在Matt的解决方案上的建筑物,我发现以下更清洁:
buildscript {
repositories {
<your repos>
}
dependencies {
classpath '<your jar>'
}
}
afterEvaluate { project -> // afterEvaluate for resolving the build script dependency
apply from: project.buildscript.classLoader.getResource('path/to/your/resource/in/the/jar').toURI()
}
Run Code Online (Sandbox Code Playgroud)
只是我的两分钱.:-)
小智 8
我有一个答案和另一个问题:
首先,要从存储库(即Nexus)访问共享文件,您可以构建包含查询的URL:
apply from: 'http://server-url/nexus/service/local/artifact/maven/redirect?r=repository-name&g=group-name&a=build-common&e=gradle&v=LATEST'
Run Code Online (Sandbox Code Playgroud)
我为我们的项目做了这个,效果很好.我可以在单独的SVN项目中管理'build-common.gradle'文件,并将其作为SNAPSHOT上传到Nexus.上面的URL(为'server-url','repository-name'和'group-name'插入了适当的值)找到我上传的.gradle脚本的最新SNAPSHOT.无需将其包装在罐子里.
我的版本:
repositories {
<your repos>
}
configurations {
scripts
}
dependencies {
scripts group: 'org.foo', name: 'build', version: '1.0.0', ext: 'gradle'
// add more scrips if needed
}
configurations.scripts.resolve().each { apply from: it }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12298 次 |
| 最近记录: |