gradle - 如何使用 Gradle 构建强制工件/模块名称

标签 gradle

请注意:即使这个问题特别提到 Bamboo CIGradle ShadowJar插件,我相信这是一个基本的 Gradle 配置问题,相信任何厌战的 Gradle Guru 都可以回答。

我有一个使用 Gradle 构建的 Groovy 应用程序,其中 build.gradle是:

apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'eclipse'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

group = 'com.me.myapp'

mainClassName = "com.me.myapp.MyAppDriver"

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.0'
    }
}

dependencies {
    // Omitted for brevity
}

jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

repositories {
    mavenLocal()
    mavenCentral()
}

shadowJar {
    classifier = ''
    mergeServiceFiles {
        exclude 'META-INF/*.DSA'
        exclude 'META-INF/*.RSA'
    }
}

artifacts {
    archives(file("${buildDir}/libs/myapp-${version}.jar")) {
        name "myapp"
        classifier ""
        builtBy shadowJar
    }
}

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

在哪里 gradle.properties是:
group=com.me.myapp
version=1.0.0

如您所见,我正在使用 ShadowJar 为我的应用程序生成一个独立的“胖 JAR”。当我运行 gradle clean build shadowJar在我的本地机器上,Gradle 生成 build/libs/myapp-1.0.0.jar工件/存档。但是,当从我们的 CI 服务器 (Bamboo) 运行相同的命令时,Gradle 会生成 build/libs/MYAPP-KEY-1.0.0.jar工件/存档,其中 MYAPP-KEY是 Bamboo “构建 key ”(本质上是标识服务器上构建的唯一 key /标签)。如果你对我在说什么一无所知,我认为这并不重要。重要的是要了解 Bamboo 将查看 myapp 的源代码到名为 MYAPP-KEY 的文件夹在 CI 服务器上。所以在本地myapp/是我项目的根,但在 CI MYAPP-KEY 上是我项目的根。

重点是我没有在我的 Gradle 配置中明确定义某些内容,因此 Gradle 似乎正在使用项目根目录的名称来生成构建 JAR 的名称。 这是什么“东西”,我如何/在哪里定义它? 期望的最终目标是产生 build/libs/myapp-1.0.0.jar在本地和 CI 上。

最佳答案

请看https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html

您可以指定 jar 的基本名称或完整存档名称

将其添加到您的 jar部分

关于gradle - 如何使用 Gradle 构建强制工件/模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575921/

相关文章:

android - Eclipse 无法将 android 项目导出到基于 gradle 的

更新SDK后Android项目无法构建

android - gradle中的android studio firebaseui版本

依赖项检索之前的 gradle 钩子(Hook)

android - com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复项:com/google/android/gms/internal/zzel.class

android - Gradle Android 找不到方法 testPackage()

android - org.apache.http编译错误

gradle - 如何在 IntelliJ 中恢复/重新同步 Gradle?

java - 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@397740e0 上找不到属性 'compile'

spring-boot - 无法使用 spring boot gradle 插件执行依赖管理的 junit5 测试