Spring Boot + Gradleプロジェクトで実行可能なjarを作成しようとしていますが、今のところ何も機能しません。これが可能な限り単純な構造です。おそらく、Gradle構成に何かが欠けています。
Gradle:
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'Java'
apply plugin: 'org.springframework.boot'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
jar {
manifest {
attributes 'Main-Class': 'com.example.demo.DemoApplication'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
メイン設定ファイル:
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping(value = "/")
public String index() {
return "index";
}
}
Java -jar 1.jarのようなjarファイルを実行すると、この例外が発生しました。
[main] ERROR org.springframework.boot.SpringApplication - Applicati
on startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to proces
s import candidates for configuration class [com.example.demo.DemoApplication];
nested exception is Java.lang.IllegalArgumentException: No auto configuration cl
asses found in META-INF/spring.factories. If you are using a custom packaging, m
ake sure that file is correct.
at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.Java:556)
at org.springframework.context.annotation.ConfigurationClassParser.parse
(ConfigurationClassParser.Java:185)
at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.processConfigBeanDefinitions(ConfigurationClassPostProcessor.Java:308)
at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.Java:228)
at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.ja
va:272)
at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.Java:92)
at org.springframework.context.support.AbstractApplicationContext.invoke
BeanFactoryPostProcessors(AbstractApplicationContext.Java:687)
at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.Java:525)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationConte
xt.refresh(EmbeddedWebApplicationContext.Java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.
Java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringAppli
cation.Java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java
:303)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java
:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java
:1107)
at com.example.demo.DemoApplication.main(DemoApplication.Java:13)
Caused by: Java.lang.IllegalArgumentException: No auto configuration classes fou
nd in META-INF/spring.factories. If you are using a custom packaging, make sure
that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.Java:277)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.getCandidateConfigurations(AutoConfigurationImportSelector.Java:153)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.selectImports(AutoConfigurationImportSelector.Java:95)
at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.Java:547)
... 14 common frames omitted
何が悪いのでしょうか?
あなたが提供したすべてのソースでプロジェクトを作成しました。ターミナルから「gradle build」を実行し、/ build/libsに切り替えてから「Java -jar artifactname」を実行すると正常に機能します。
クリーンアップして再コンパイルしようとしましたか?どのバージョンのGradleを使用していますか?
Boot 2.xでは、bootJarおよびbootWarタスクがアプリケーションのパッケージ化を担当します。
BootJarタスクは、実行可能jarファイルの作成を担当します。これはJavaプラグインが適用されると自動的に作成されます。
実行可能なjar/warファイルが生成されない場合、以下のgradleタスクを手動で実行します。
$./gradlew bootJar
同様に、bootWarは実行可能なwarファイルを生成し、warプラグインが適用されると作成されます。
次を使用してbootWarタスクを実行できます。
$./gradlew bootWar
Spring Boot 2.xでは、Gradle 4.0以降を使用する必要があることに注意してください。
春のブートでは、実行可能なjarファイルを直接作成できます
springBoot {
executable = true
}
してみてください
jar{
baseName = 'myapp'
version = 'version'
}
コマンドラインからmyapp-version.jar Do ./myapp-version.jarという名前のjarを作成します。実行します
詳細については、次のリンクを参照してください。 https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html