【问题标题】:Gradle rmp build from java multiproject从 Java 多项目构建 Gradle rmp
【发布时间】:2020-08-16 02:34:50
【问题描述】:

我正在尝试通过 Gradle 从 java 源代码构建一个 RPM Centos 7 包。 我有一个带有共享库和 Java 应用程序的 Java 多项目环境。 这是文件系统:

|-- automation
build.gradle
settings.gradle
    |-- datalib
        |-- build
            |-- libs
            datalib-1.0.jar
        |-- src
            |-- main
                |-- it
                    |-- datalib
    build.gradle
    settings.gradle
    |-- metrics   
        |-- build
            |-- distributions
            metrics-1.0.rpm
        |-- libs
        metrics-1.0.jar
        |-- src
            |-- main
                |-- it
                    |-- metrics
    build.gradle
    settings.gradle

自动化settings.gradle 是:

rootProject.name = 'automation'
include 'metrics' 
include 'datalib'

自动化build.gradle 是:

allprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'

    sourceCompatibility = 1.11
    targetCompatibility = 1.11

    repositories {
        mavenCentral()
    }
}

subprojects {
    version = '1.0'


    dependencies {
        implementation group: 'commons-cli', name: 'commons-cli', version: '1.4'
        implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.1'
        implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.1'
        testImplementation 'junit:junit:4.12'
    }

}

project(':metrics'){
    dependencies{
        implementation project(':datalib')
    }
}

我想从 metrics 项目构建 RPM,包括 RPM 中的 datalib 库。 我已经编写了这个 Gradle build.gradle 文件,但它不起作用:

// apply plugin: 'application'

plugins {
    id "application"
    id "nebula.ospackage" version "8.3.0"
    id 'com.palantir.git-version' version '0.12.3'
}

dependencies {
    testImplementation group: 'org.apache.commons', name: 'commons-csv', version: '1.6'
}

ospackage {
        def details = versionDetails()
        packageName = 'metrics'
        license = 'Proprietary Software'
        description = 'Events Analytics Software'
        version = details.lastTag
        release = details.commitDistance + 1 + '.' + details.gitHash
        arch = X86_64
        os = LINUX
        type = BINARY
        user 'root'
        fileMode 0644
        requires('java', '1.9', GREATER | EQUAL)
        vendor 'xxx'
        directory('/etc/metrics', 755)
        from(jar.outputs.files) {
            into '/usr/share/metrics'
        }
        from(':datalib:/build/libs') {
            into '/usr/share/metrics'
        }
}


// Define the main class for the application
mainClassName = 'it.fox.metrics.App'

我拥有的 RPM 不包含 datalib

MacBook-Pro:distributions fox$ rpm -qlp metrics-1.0~471-262.f5ad4a18ca.x86_64.rpm
/usr/share/metrics
/usr/share/metrics/metrics-1.0.jar

如何包含我的共享库?

谢谢

【问题讨论】:

    标签: java gradle multi-project


    【解决方案1】:

    我找到了解决问题的方法。 我在这里发布解决方案,也许可以帮助某人。 解决方案是使用 Gradle configurations api。 我的 Gradle 配置变为:

    // apply plugin: 'application'
    
    plugins {
        id "application"
        id "nebula.ospackage" version "8.3.0"
        id 'com.palantir.git-version' version '0.12.3'
    }
    
    dependencies {
        testImplementation group: 'org.apache.commons', name: 'commons-csv', version: '1.6'
    }
    
    ospackage {
            def details = versionDetails()
            packageName = 'metrics'
            license = 'Proprietary Software'
            description = 'Events Analytics Software'
            version = details.lastTag
            release = details.commitDistance + 1 + '.' + details.gitHash
            arch = X86_64
            os = LINUX
            type = BINARY
            user 'root'
            fileMode 0644
            requires('java', '1.9', GREATER | EQUAL)
            vendor 'xxx'
            directory('/etc/metrics', 755)
            from(configurations.runtimeClasspath) {
                into '/usr/share/metrics'
            }
    }
    

    希望这可以帮助某人。

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 2015-04-26
      • 2012-06-24
      • 1970-01-01
      • 2021-03-31
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      相关资源
      最近更新 更多