【问题标题】:Gradle - uploadArchives generated snapshot is different from createJarGradle - uploadArchives 生成的快照与 createJar 不同
【发布时间】:2018-06-04 12:07:07
【问题描述】:

使用我的 build.gradle 文件,我正在使用 createJar 任务创建一个 jar 文件,然后我使用 uploadArchives 任务上传该文件。

该项目很时髦,结构如下: /src/main/groovy/package.name /src/test/groovy

这是一个测试 jar 文件,其中主类位于 /src/test/groovy 中,它用于处理 /src/main/groovy/package.name 中的类

createJar 任务有效并正确创建了我需要的 jar。

到目前为止一切顺利。

问题是当我运行 uploadArchives 时,它会生成一个 snapshot.jar,它只包含来自 /src/main/groovy/package.name 的类

为什么 2 个 jar 文件不同?

如何使 uploadArchives 从 createJar 上传 jar(或者至少包括测试类并使用 createJar 中指定的主类运行它)?

在 build.gradle 我有类似的东西:

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'maven'

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

artifacts {
    archives file: file('./build/libs/name-'+version+'.jar'), name: 'name', type: 'jar'
}

task createJar(type: Jar) {
    classifier 'test'
    from sourceSets.test.output

    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File',
                   'Implementation-Version': version,
                   'Main-Class': 'MainClassName'
    }
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://url/snapshotsFolder/") {
                authentication(userName: "user", password: "pass")
            }
        }
    }
}

【问题讨论】:

  • 您可以将Jar 任务配置应用于java 插件(jar)创建的任务,而不是您自己创建的任务(createJar)。
  • @lu 感谢您的回复,但我不确定我是否理解
  • 我添加了一个带有示例的答案。

标签: gradle groovy


【解决方案1】:

为了扩展我的评论,让我添加一个示例:

jar {
    classifier 'test' 
    from sourceSets.test.output
    manifest { 
        attributes 'Implementation-Title': 'Gradle Jar File', 'Implementation-Version': version, 'Main-Class': 'MainClassName'
    }
}

这将配置Jar 类型的任务jar,由java 插件创建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 2020-02-12
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 2017-02-22
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多