2016-03-08 119 views
0

我希望能够定义设置(理想用户gradle.properties)的仓库我可以将自定义存储库添加到gradle.properties中吗?

的最终目标是这样的:

repositories { 
    mavenCentral() // Can't/don't want to use this 
    nexusCentral() // Can use these - on network Nexus server 
    nexusSnapshot() 
} 

我怎么会去这样做呢?再一次,这将在理想情况下进入用户级gradle.properties文件,所以我们不必在每个模块中都引用它。

这仅仅是Maven的提供了一个简单的行家风格神器库,手工的方式将是:

maven { 
     url "http://path/to/nexus" 
    } 

另外一个要求是使用“发布”的任务,这对一个存储库中定义的凭据(即詹金斯用于发布模块):

publishing { 
... 
maven { 
      url "http://path/to/nexus" 
      // Jenkins provides these as -P Gradle parameters. 
      credentials { 
       username = "${uploaderUser}" 
       password = "${uploaderPassword}" 
      } 
     } 

这些凭证将不知道普通用户,而是将理想中詹的gradle.properties进行配置。我们不希望用户构建失败,因为他们无法解析凭据 - 他们甚至不会使用“发布”任务。

回答

2

您可以使用somenthing这样的:

maven { 
      credentials { 
       username getCredentialsMavenUsername() 
       password getCredentialsMavenPassword() 
      } 
      url 'xxxxx' 
    } 

/** 
* Returns the credential username used by Maven repository 
* Set this value in your ~/.gradle/gradle.properties with CREDENTIALS_USERNAME key 
* @return 
*/ 
def getCredentialsMavenUsername() { 
    return hasProperty('CREDENTIALS_USERNAME') ? CREDENTIALS_USERNAME : "" 
} 

/** 
* Returns the credential password used by Maven repository 
* Set this value in your ~/.gradle/gradle.properties with CREDENTIALS_PASSWORD key 
* @return 
*/ 
def getCredentialsMavenPassword() { 
    return hasProperty('CREDENTIALS_PASSWORD') ? CREDENTIALS_PASSWORD : "" 
} 

如果用户没有凭据的脚本不会失败。

+0

谢谢,这可能就是我最终的结果。 – Dan

2

不知道这回答你的问题,但你可以把这个在gradle.properties文件:

nexusUrl=http://path/to/nexus 

,并为此在的build.gradle:

maven { 
    url project.property(nexusUrl) 
} 

编辑:

关于您的凭据,您应该需要的全部内容类似于

if (project.hasProperty('uploaderUser') && project.hasProperty('uploaderPassword')) { 
    credentials { 
     username = project.property('uploaderUser') 
     password = project.property('uploaderPassword') 
    } 
} 
+0

我认为应该*主要*覆盖它。唯一剩下的就是其中一个存储库具有设置的凭据(所以Jenkins可以发布),例如: 我希望隐藏所有这些: * Jenkins从用户/密码获取属性 *普通用户从不关心用户/密码(并且在未设置值时不会失败) 用该位添加了另一个原始答案的片段。谢谢! – Dan

+0

我编辑了我的答案。这个想法是一样的。 –

相关问题