フォーラム » つれづれ Java編 »
高徹Jetty サーブレット
返答 (3)
高徹 GradleプロジェクトでJetty - 高橋 徹 さんが1年以上前に追加
Jetty 11は、Jakarta EE 9対応(Servlet 5.0)
Jetty 12は、Jakarta EE 10対応(Servlet 6.0)
GradleでJettyを使うアプリケーション開発は、org.grettyプラグインを使うのが良いとある。
- build.gradle.kts
plugin { war id("org.gretty") version "4.1.2" } : dependencies { compileOnly("jakarta.servlet:jakarta.servlet-api:6.0.0") implementation("org.eclipse.jetty:jetty-server:12.0.7") } 
gretty 4.1.2は、Jetty 12には対応していない可能性あり。
高徹 参考になりそうな記事を探し回る - 高橋 徹 さんが1年以上前に追加
高徹 warファイルのディレクトリとmail-class - 高橋 徹 さんが1年以上前に追加
java -jar xxx.warで実行可能とするには、warファイルの中に次の構造でメインクラスが必要です。
- META-INF/MANIFEST.MFに、Main-Class属性でメインクラスのFQCNを定義
 - warファイルにメインクラスのFQCNに合わせたディレクトリにメインクラスを配置
 
+- META-INF
|   +- MANIFEST.MF
+- foo
    +- Main.class
	しかし、Gradleのwarプラグインで生成すると、src/main/java以下のファイルは、
+- META-INF
|   +- MANIFEST.MF
+- WEB-INF
    +- classes
        +- foo
            +- Main.class
となってしまい、java -jar xxx.warで実行できませんでした。
build.gradle.ktsに追記
    from(fileTree("build/classes/java/main") {
        include("**/Main.class")
    })
	で、src/main/java以下のMain.classがルートからのパスで生成されるようになりました。
ただし、Mainクラスから呼び出す依存クラスがルートからのパスにないと実行できません。(次の課題)