Gradle Ear插件:添加没有版本说明符的模块

Gradle Ear插件:添加没有版本说明符的模块,gradle,groovy,jboss,ear,Gradle,Groovy,Jboss,Ear,我正试图用Gradle组装一个ear,其中应用程序。xml包含一些非ejb模块。依赖项目档案是使用{basename}-{version}.{extension}标准生成的,因此看起来像子项目-0.2.6.rar。但是,由于其中一些项目需要标记为java或连接器模块,因此我在处理正确的文件时遇到了一些问题 这是构建脚本的外观: apply plugin: 'ear' dependencies { deploy project(':EJB-Project') deploy pro

我正试图用Gradle组装一个ear,其中
应用程序。xml
包含一些非ejb模块。依赖项目档案是使用
{basename}-{version}.{extension}
标准生成的,因此看起来像
子项目-0.2.6.rar
。但是,由于其中一些项目需要标记为java或连接器模块,因此我在处理正确的文件时遇到了一些问题

这是构建脚本的外观:

apply plugin: 'ear'

dependencies {
    deploy project(':EJB-Project')
    deploy project(':Commons')
    deploy project(':UpdateManager')

    earlib 'net.sf:jasperreports:unknown'
    earlib 'org.apache.axis:axis:1.4'
}

ear {
    deploymentDescriptor {
        applicationName = 'EnterpriseProject'

        module('Commons.jar', 'java')
        module('UpdateManager.rar', 'connector')
    }

    // Remove the version postfix from archived files
    rename(/(.*)-${version}(.)/, /$1$2/)
}
jboss deployment structure.xml
在子部署节点中声明了存档,但没有版本说明符

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
       ...
    <sub-deployment name="EJB-Project.jar">
        <dependencies />
        <exclusions />
    </sub-deployment>
    <sub-deployment name="Commons.jar">
        <dependencies />
        <exclusions />
    </sub-deployment>
        ...

我希望以一种干净的方式解决这个问题——例如,在模块部分引用项目本身,而不是指定文件名(及其扩展名)并为JBoss生成部署xml,但我不知何故陷入了困境。我希望删除或保留所有版本字符串。

有一个插件,生成JBoss部署结构。
因为我找不到任何干净的方法来解决这个问题,所以我只是实现了插件上缺少的功能,所有者将它们合并了。

有一个插件,它生成JBoss部署结构。
因为我找不到任何干净的方法来解决这个问题,所以我只是实现了插件上缺少的功能,而所有者将它们合并了。

我在gradle 6.8中解决了类似的问题:

我从这里开始:

plugins {
    id 'ear'
}

dependencies {
    deploy      'org.cpp.pp:dmReports:5.04.01-2'
    deploy      project(':reporting-transpoLib')
}

ear {
    deploymentDescriptor {
        module('dmReports-5.04.01-2.jar', 'java')
        module("reporting-transpoLib-${project.version}.jar", 'java')
    }
}
它生成了一个ear,其中包含具有版本的JAR和具有版本的部署描述符

但我还有第二次war,在它的部署描述符中指定了对dmReports的依赖

对于通过这个ear部署的每个新版本的dmReports,我还必须更新war部署描述符(依赖项部分)——这是不正常的

我需要从ear和war部署描述符中删除dmReports版本

所以我把耳朵改成这个:

plugins {
    id 'ear'
}

configurations {
    dmReports
    reportingTranspoLib
}

dependencies {
    dmReports          'org.cpp.pp:dmReports:5.04.01-2'
    reportingTranspoLib project(':reporting-transpoLib')
}

// copyToLib task copies the dependencies and rename them (remove version) in a separate 
// folder: ${buildDir}/lib. This folder will be used as input for deploy configuration

task copyToLib {
    dependsOn(':reporting-transpoLib:build')

    doFirst {
        def  configNames = [ 'dmReports', 'reportingTranspoLib']
        configNames.each { configName ->
            configurations.getByName(configName).resolvedConfiguration.resolvedArtifacts.each { artifact ->
                project.copy {
                    from artifact.file
                    into "${buildDir}/lib"
                    rename { "${artifact.name}.${artifact.extension}" }
                }
            }
        }
    }
}

// the output of copyToLib task (folder ${buildDir/lib}) is taken and used by configuration deploy

dependencies {
    deploy files("${buildDir}/lib")
}


ear {
    dependsOn(copyToLib)
//    from(copyToLib)
    deploymentDescriptor {
        module('dmReports.jar', 'java')
        module("reporting-transpoLib.jar", 'java')
    }
}
因此,我获得了一个ear,其中包含没有版本的JAR和没有版本的部署描述符。
非常有用。

我在gradle 6.8中解决了类似的问题:

我从这里开始:

plugins {
    id 'ear'
}

dependencies {
    deploy      'org.cpp.pp:dmReports:5.04.01-2'
    deploy      project(':reporting-transpoLib')
}

ear {
    deploymentDescriptor {
        module('dmReports-5.04.01-2.jar', 'java')
        module("reporting-transpoLib-${project.version}.jar", 'java')
    }
}
它生成了一个ear,其中包含具有版本的JAR和具有版本的部署描述符

但我还有第二次war,在它的部署描述符中指定了对dmReports的依赖

对于通过这个ear部署的每个新版本的dmReports,我还必须更新war部署描述符(依赖项部分)——这是不正常的

我需要从ear和war部署描述符中删除dmReports版本

所以我把耳朵改成这个:

plugins {
    id 'ear'
}

configurations {
    dmReports
    reportingTranspoLib
}

dependencies {
    dmReports          'org.cpp.pp:dmReports:5.04.01-2'
    reportingTranspoLib project(':reporting-transpoLib')
}

// copyToLib task copies the dependencies and rename them (remove version) in a separate 
// folder: ${buildDir}/lib. This folder will be used as input for deploy configuration

task copyToLib {
    dependsOn(':reporting-transpoLib:build')

    doFirst {
        def  configNames = [ 'dmReports', 'reportingTranspoLib']
        configNames.each { configName ->
            configurations.getByName(configName).resolvedConfiguration.resolvedArtifacts.each { artifact ->
                project.copy {
                    from artifact.file
                    into "${buildDir}/lib"
                    rename { "${artifact.name}.${artifact.extension}" }
                }
            }
        }
    }
}

// the output of copyToLib task (folder ${buildDir/lib}) is taken and used by configuration deploy

dependencies {
    deploy files("${buildDir}/lib")
}


ear {
    dependsOn(copyToLib)
//    from(copyToLib)
    deploymentDescriptor {
        module('dmReports.jar', 'java')
        module("reporting-transpoLib.jar", 'java')
    }
}
因此,我获得了一个ear,其中包含没有版本的JAR和没有版本的部署描述符。 非常有用