Gradle Ear插件:添加没有版本说明符的模块
我正试图用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
应用程序。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和没有版本的部署描述符。
非常有用