在本地发布 Gradle 快照

问题描述 投票:0回答:3

这是我的

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
版本。

再说一遍:

在本地发布
    dummy
  1. 的最低代码是什么?
    在本地发布时,有什么方法可以指定一个 
  2. SNAPSHOT
  3. 版本,以便其他项目始终获取最新副本吗?
    其他本地项目需要使用什么来实现这个
  4. SNAPSHOT
  5. ?类似于
    compile ':dummy:LATEST'
    
        
maven gradle publishing snapshot
3个回答
9
投票
这里

我已经为您准备了示例项目,这是build.gradle配置的最低限度。


    您需要添加
  1. apply plugin: 'maven'

    并设置

    group = 'somegroup'
    maven
    插件提供
    install
    任务,并且需要
    group
    在 Maven 存储库中安装工件。
    
    
    然后运行

    gradle clean install

    。如果没有版本通过,它将评估为

    unspecified
    ,如果没有配置artifactId,它将评估为
    project.name
    在这里
    您可以找到如何配置其他maven属性。 安装快照进行本地开发绝对是个好主意。

  2. 如果您希望其他项目始终选择最新版本的 SNAPSHOT,您需要将以下代码添加到
  3. build.gradle

    脚本中。它保证解析到最新版本。

    
    
    configurations.all { resolutionStrategy { cacheChangingModulesFor 0, 'seconds' } }

  4. 首先,您需要将快照存储库添加到
  5. repositories

    块(只是一个示例) - 使用本地maven存储库,不需要此步骤:

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

    依赖关系应指定为:

    group:artifact:0.+

    
    
    
  6. 如有任何疑问,请随时询问。


2
投票

gradle install

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

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


0
投票

在图书馆:

plugins { id 'java' id 'org.springframework.boot' version '3.3.1' id 'io.spring.dependency-management' version '1.1.5' id 'jacoco' id 'maven-publish' ... publishing { publications { mavenJava(MavenPublication) { artifactId "${archivesBaseName}" artifact jar artifact sourceJar pom.withXml { asNode().appendNode('description', archivesBaseName) } } } }

然后在我的项目中需要它:

repositories { mavenLocal() maven { url "$artifactory_url" allowInsecureProtocol = true credentials { username = 'someuser' password = 'somepass' } } }

关键是首先是
mavenLocal()

。 然后在库项目中运行命令: gradle clean build gradle publishToMavenLocal

如前所述:
使用 Gradle 将 Java 工件发布到 Maven Local

完成后,我刷新了配置(以添加新的本地 Maven 存储库)和依赖项,并且它起作用了。 我的 IDE 是 IntelliJ。

© www.soinside.com 2019 - 2024. All rights reserved.