Upload only war/jar files in gradle(restrict zip/tar generation and upload)

人盡茶涼 提交于 2019-12-20 02:15:54

问题


My build script is like as follows. I use gradle build command to build and gradle upload command to upload the artifact. My problem is a tar,zip file is also generated with this command and get uploaded. I dont want it. Only things I would like to get uploaded is 'jar' and 'war' files. I have also a related question posted by me yesterday here.

More details(I have excluded some unwanted code)

build file in root

allprojects  {
  apply plugin: 'maven'
 group = 'groupid'
version = '1.0-SNAPSHOT'
}

subprojects {
  apply plugin: 'java'
  sourceCompatibility = 1.7
  targetCompatibility = 1.7


    repositories {
        maven {
            credentials {
                username "$nexusUser"
                password "$nexusPass"
            }
            url "$nexusUrl"
        }
    }

    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: "$nexusSnapshotUrl") {
                    authentication(userName: "$nexusUser", password: "$nexusPass")
                }
            }
        }
    }
}

ext.comlib = [ // Groovy map literal
                  junit3: "junit:junit:3.8",
                  junit4: "junit:junit:4.9",
                  spring_core: "org.springframework:spring-core:3.1",
                  hibernate_validator : "org.hibernate:hibernate-validator:5.1.3.Final",
                  spring_core : "org.springframework.security:spring-security-core:4.0.2.RELEASE",
                  spring_security_web: "org.springframework.security:spring-security-web:4.0.2.RELEASE",
                  spring_security_config: "org.springframework.security:spring-security-config:4.0.2.RELEASE",
                  spring_boot_starter_test: "org.springframework.boot:spring-boot-starter-test:1.2.5.RELEASE",
                  spring_boot_starter_actuator: "org.springframework.boot:spring-boot-starter-actuator:1.2.5.RELEASE",
                  spring_boot_plugin_gradle: "org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE",
                  asciidoctor_gradle_plugin: "org.asciidoctor:asciidoctor-gradle-plugin:1.5.1",
                  asciidoctor_pdf_plugin: "org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.9"/*,
                  sl4j_api: "org.slf4j:slf4j-api:1.7.12",
                  sl4j_log4j: "org.slf4j:slf4j-log4j12:1.7.12",
                  logback_classic: "ch.qos.logback:logback-classic:1.1.3",
                  logback_core: "ch.qos.logback:logback-core:1.1.3"*/
]

build file in sub module

apply plugin: 'spring-boot'
group = 'com.group.id'
apply from: "../build.gradle"
apply plugin: 'org.asciidoctor.gradle.asciidoctor'

apply plugin: 'war'

description = 'module name'
dependencies {
    compile "someothermodule:commonapi:1.0.0-SNAPSHOT"
    compile "io.springfox:springfox-swagger2:2.0.1"
    compile project(':dependingproject1:dependingproject2')
    compile comlib.spring_boot_starter_actuator
    compile comlib.spring_core
    compile comlib.spring_security_web
    compile comlib.spring_security_config
    testCompile(comlib.spring_boot_starter_test) {
exclude(module: 'commons-logging')
    }
    testCompile comlib.junit4
    providedCompile comlib_app.spring_boot_plugin_tomcat
    testCompile "io.springfox:springfox-staticdocs:2.0.3"
    testCompile "org.springframework:spring-test:4.1.7.RELEASE"
}

ext {
    swaggerOutputDir = file("src/docs/asciidoc/generated")
    asciiDocOutputDir = file("${buildDir}/asciidoc")
}

test {
    systemProperty 'org.springframework.restdocs.outputDir', asciiDocOutputDir
    systemProperty 'io.springfox.staticdocs.outputDir', swaggerOutputDir

}

//spring boot plugin
buildscript {
    repositories {
        maven {
            credentials {
                username "$nexusUser"
                password "$nexusPass"
            }
            url "$nexusCentral"
        }
        maven {
            credentials {
                username "$nexusUser"
                password "$nexusPass"
            }
            url "$nexusThirdParty"

        }
    }
    dependencies {
        classpath(comlib.spring_boot_plugin_gradle)
    }
}

回答1:


Included the following code snippet in my gradle file

[distZip, distTar].each { task -> configurations.archives.artifacts.removeAll
{ it.class.simpleName == "ArchivePublishArtifact" && it.archiveTask == task }

task.enabled = false
}

For more details refer this link. Its issue with spring boot plugin.




回答2:


arjuncc's solution doesn't seem to work on Gradle 4.10.2, so here's one that works and uses public APIs, hopefully it will continue to work.

configurations.archives.artifacts.removeAll {
    // exclude from the archives configuration all artifacts that were generated by distZip & distTar
    def depTasks = it.getBuildDependencies().getDependencies()
    depTasks.contains(distZip) || depTasks.contains(distTar)  
}



回答3:


More or less the same as ajuncc's solution, but perhaps a bit more simple. Remove all .tar artifacts from the archives configuration:

configurations.archives.artifacts.removeAll {PublishArtifact publishArtifact -> publishArtifact.type == 'tar'} 


来源:https://stackoverflow.com/questions/33774782/upload-only-war-jar-files-in-gradlerestrict-zip-tar-generation-and-upload

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!