MANIFEST.MF ファイルと deplomentDescriptor にカスタム属性を追加しています。これは、gradle cli を介してビルドすると期待どおりに機能しますが、Eclipse でサーバーにデプロイすると、MANIFEST.MF および application.xml ファイルが生成またはデプロイされません。
Gradle バージョン:6.5.1
ear モジュールの DIR 構造
サンプルEAR
--META-INF
-MANIFEST.MF
-application.xml
--build.gradle
--settings.gradle
sampleEAR build.gradle ファイル
step-1: META-INF dir の参照
plugins {
id 'ear'
id 'eclipse-wtp'
}
description = "Sample Application"
dependencies{
deploy fileTree(dir: "../SampleEAR", include: 'core*.jar')
deploy project(path: ':SampleWeb', configuration: 'archives')
deploy project(':SampleService')
earlib project(':SampleModel')
}
ear {
metaInf {
from 'META-INF'
exclude 'MANIFEST.MF'
}
manifest {
attributes('Created-By': "Gradle $gradle.gradleVersion",
'version': archiveVersion,
'Built-By': System.getProperty('user.name'),
)
}
}
ステップ 2: gradle 経由で application.xml を生成する
ear {
deploymentDescriptor {
applicationName = 'Sample'
description = "Generated by Gradle $gradle.gradleVersion"
displayName = project.name
webModule("SampleWeb.war", 'Sample')
}
manifest {
attributes('Created-By': "Gradle $gradle.gradleVersion",
'version': archiveVersion,
'Built-By': System.getProperty('user.name'),
)
}
}
ステップ-3:
ear {
from("META-INF"){
into("META-INF")
}
generateDeploymentDescriptor = false
manifest {
attributes('Created-By': "Gradle $gradle.gradleVersion",
'version': archiveVersion,
'Built-By': System.getProperty('user.name'),
)
}
}
上記の 3 つの手順を試しましたが、cli 経由では正常に動作しますが、Eclipse IDE では動作しません。
Eclipse でサーバーにデプロイすると、META-INF コンテンツが作成されませんでした。マニフェスト属性または deplomentDescriptor を介してカスタマイズされている場合は、src からの META-INF コンテンツを eclipse を介して ear にデプロイし、デプロイする必要があります。
ありがとう、カーシック