在本地发布Gradle快照

时间:2015-01-03 07:38:32

标签: maven gradle publishing snapshot

这是我的dummy项目的build.gradle文件:

apply plugin: 'groovy'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.3'
    compile 'org.slf4j:jcl-over-slf4j:1.7.7'

    testCompile 'junit:junit:4.11'
    testCompile 'org.mockito:mockito-all:1.10.8'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

当我运行gradle clean build -Pversion=1.2.3时,这会打包我的所有代码并为我创建build/libs/dummy-1.2.3.jar

我想知道必要的绝对最小数量的Gradle代码,以便我可以将我的“虚拟”JAR发布到我的本地Maven缓存(mavenLocal())。此外,这如何与版本控制一起使用?我可以总是为虚拟JAR指定具体版本,但是当我在本地发布时,发布SNAPSHOT版本对我来说更有意义(至少对我来说)。我可能只运行gradle clean build -Pversion=0.1.SNAPSHOT,但我担心的是其他本地项目是否会选择最新的SNAPSHOT版本。

再次:

  1. 在本地发布dummy的最低限度代码是什么?
  2. 任何方式,在本地发布时,指定其他项目总是会获取最新副本的SNAPSHOT版本?
  3. 其他本地项目需要用什么来获取此SNAPSHOT?像compile ':dummy:LATEST'
  4. 之类的东西

2 个答案:

答案 0 :(得分:7)

Here我已为您准备了示例项目,这是build.gradle配置的最低要求。

  1. 您需要添加apply plugin: 'maven'并设置group = 'somegroup'maven插件提供install任务,并且需要group才能在maven存储库中安装工件。

    然后运行gradle clean install。如果没有通过任何版本,它将评估为未指定,如果未配置artifactId,它将评估为project.nameHere您可以找到如何配置其他maven属性。

    为本地开发安装快照绝对是个好主意。

  2. 如果您希望其他项目始终选择最新版本的SNAPSHOT您需要将以下代码添加到build.gradle脚本中。它保证解析到最新版本。

    configurations.all {
       resolutionStrategy {
         cacheChangingModulesFor 0, 'seconds'
       }
    }
    
  3. 首先您需要将快照仓库添加到repositories块(只是一个示例) - 使用本地maven仓库,不需要此步骤:

    maven {
        url 'https://oss.sonatype.org/content/repositories/snapshots'
    }
    

    依赖关系应指定为:

    group:artifact:0.+
    
  4. 如有任何问题,请随时提出。

答案 1 :(得分:3)

1)你只需要做一个

gradle install

2)指定您喜欢的任何版本 - SNAPSHOT版本对于主动开发有意义。一旦您认为您的库不太可能发生变化,您一定应该选择非快照版本。

3)您必须为本地仓库中的版本指定依赖关系,就像第三方库一样。