2014-10-04 90 views
1

我需要使用gradle指定某些项目的本地发布,但不是全部。特定项目的Gradle初始化脚本

喜欢的东西在init.gradle allprojects,类似于

allprojects { 
    apply plugin: 'maven-publish' 

    publishing { 
     repositories { 
      maven { 
       url 'http://nexus.myintranet.local/content/repositories/snapshots' 
       credentials { 
        username 'myusername' 
        password 'mypassword' 
       } 
      } 
     } 
    } 
} 

假设我有/home/ed/xthirdparty/home/ed/ythirdparty。我怎样才能将这个配置应用到这两个项目而不编辑它们的build.gradle文件?我唯一的办法是使用-I--init-script?或者我可以使用像allprojects这样的方法来区分项目的路径或其他属性?

+0

你的意思是包含两个*项目*(属于相同的构建)或两个*建立*? 'allprojects'配置一个构建的所有项目(如果你把它放到'〜/ .gradle/init.gradle'中,每个构建都会)。 – 2014-10-04 07:27:35

+0

我的意思是两个不相关的构建。换句话说,我正在寻找能够识别特定构建的“allprojects”之类的东西。 – 2014-10-04 19:03:48

+0

您可以在if语句中检查'rootProject.name',尽管它不保证是唯一的。 – 2014-10-04 19:39:16

回答

1

继彼得Niederwieser上述意见,我可以指定替代出版了一些项目的基础上,他们的机器上的位置:

allprojects { 
    def thirdparty = [ '/home/ed/xthirdparty', '/home/ed/ythirdparty' ] 
    if (rootDir.path in thirdparty) { 
     apply plugin: 'maven-publish' 
     publishing { 
      repositories { 
       maven { 
        url 'http://nexus.myintranet.local/content/repositories/snapshots' 
        credentials { 
         username 'myusername' 
         password 'mypassword' 
        } 
       } 
      } 
     } 
    } 
}