gpt4 book ai didi

gradle - 在 gradle : How to build two fat jars, 中除了不同的依赖项之外相同吗?

转载 作者:行者123 更新时间:2023-12-03 03:59:55 27 4
gpt4 key购买 nike

我有一个 gradle 项目,它成功构建了一个 fat jar(即包含它自己的依赖项)。然而,我需要的是它构建两个 jar :

  • 具有这种依赖关系的一个: compile('postgresql:postgresql:8.4-702.jdbc4')
  • 另一个具有此依赖关系: compile('org.postgresql:postgresql:42.1.1.jre7')

  • 除此之外,它们应该是相同的。

    我可以在gradle中做到这一点吗?

    我的要求是我只能调用 gradle 一次(即不能为每个 jar 调用一次 gradle)。

    我的 gradle 文件的相关部分如下所示:
    buildscript {
    ext {
    springBootVersion = '1.3.1.RELEASE'
    }
    repositories {
    mavenCentral()
    }
    dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    classpath("io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE")
    }
    }

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'spring-boot'
    apply plugin: "io.spring.dependency-management"

    jar {
    baseName = 'demo'
    version = '0.0.1-SNAPSHOT'
    }
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
    mavenCentral()
    }

    dependencies {

    ...

    compile('org.postgresql:postgresql:42.1.1.jre7') // or compile('postgresql:postgresql:8.4-702.jdbc4')

    ...
    }

    eclipse {
    classpath {
    containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
    containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
    }

    ...

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

    最佳答案

    如果这对任何人都有帮助,我就是这样做的:

  • 将现有的 jar 提取到一个文件夹中:
    task extractJar(type: Copy, dependsOn: [otherTasksThatBuildFirstJar]) {
    from zipTree(jar.archivePath)
    into 'build/jarContents'
    }
  • 删除我不想要的依赖项:
    task deletePostgres(type: Delete, dependsOn: [extractJar]) {
    delete fileTree('build/jarContents/lib') {
    include '**/postgres*.jar'
    }
    }
  • 添加我想要的依赖项:
    task replacePostgres(type: Copy, dependsOn: [deletePostgres]) {
    from 'lib/postgresql-8.4-702.jdbc4.jar'
    into 'build/jarContents/lib'
    }
  • 构建第二个 jar :
    task buildSecondJar(type: Jar, dependsOn: [replacePostgres]) {
    baseName 'my-second-jar'
    entryCompression ZipEntryCompression.STORED //prevents compression of jars
    from files('build/jarContents')
    destinationDir project.rootDir
    manifest {
    attributes(
    'Start-Class': 'com.somewhere.MyApplication',
    'Spring-Boot-Classes': 'BOOT-INF/classes/',
    'Spring-Boot-Lib': 'BOOT-INF/lib/',
    'Spring-Boot-Version': '1.5.8.RELEASE',
    'Main-Class': 'org.springframework.boot.loader.JarLauncher'
    )
    }
    }
  • 关于gradle - 在 gradle : How to build two fat jars, 中除了不同的依赖项之外相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579159/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com