Intellij
を使用してアプリケーションを起動すると、すべて正常に動作していました。私は(Gradleのプラグインで:eu.appsatori.fatjar
)fatJar
をしたときしかし、および実行します。それはMETA-INF/spring.factories
に自動設定クラスが見つからなかったように見えますfatJarプラグインでGradleをビルドし、SpringBootアプリケーションが 'Application startup failed'を返します
11:41:01.224 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [my.testing.MyAppMain]; nested exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:482)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:184)
...
:
java -jar myapp.jar
私はこのような何かを取得しています。
このファイルを追加するには?そして、それの内容はどうあるべきですか?
私は次のビルドスクリプトを持っている:
apply plugin: "java";
apply plugin: "idea";
apply plugin: 'application'
apply plugin: 'eu.appsatori.fatjar'
apply plugin: 'org.springframework.boot'
repositories {
mavenCentral()
}
buildscript {
ext {
springBootVersion = '1.4.3.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "eu.appsatori:gradle-fatjar-plugin:0.3"
}
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/main/resources'
}
}
test {
java {
srcDir 'src/test/java'
}
}
}
fatJar {
manifest {
attributes("Main-Class": 'my.testing.MyAppMain')
}
exclude 'META-INF/*.DSA'
exclude 'META-INF/*.SF'
exclude 'META-INF/*.RSA'
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-jdbc'
runtime 'mysql:mysql-connector-java'
testCompile 'org.springframework.boot:spring-boot-starter-test'
}
をそして、私のコード例は次のとおりです。
package my.testing;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@SpringBootApplication
public class MyAppMain {
private ConfigurableApplicationContext springContext;
@Autowired
private SimpleDao dao;
public static void main(String[] args) throws Exception {
MyAppMain test = new MyAppMain();
try {
test.init();
test.doWhatYouGotToDo();
} finally {
test.stop();
}
}
private void doWhatYouGotToDo() {
System.out.println("Auto-wired dao: " + dao.hashCode());
System.out.println("Auto-wired jdbcTemplate: " + dao.jdbcTemplate.hashCode());
}
private void init() throws Exception {
springContext = SpringApplication.run(MyAppMain.class);
springContext.getAutowireCapableBeanFactory().autowireBean(this);
}
private void stop() throws Exception {
springContext.close();
}
}
@Component
class SimpleDao {
@Autowired
JdbcTemplate jdbcTemplate;
}
application.properties
ファイル:
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/some_db?useSSL=false&serverTimezone=UTC
spring.datasource.username = some_user
spring.datasource.password = some_pass
注:この質問のベースとなってon SpringBoot - making jar files - No auto configuration classes found in META-INF/spring.factories すべての答えは、Maven
でのビルドを指しています。 Gradle
に関連する回答のみをここに入力してください。
は 'fatjar'プラグインを使用しないでください...春ブーツがすでに作成されます。ここでは
は私のbuild.gradleファイルでありますファットジャー...あなたは今、2つの競合するメカニズムを持っています.... –
どうすればそのプラグインなしでファットジャーを構築できますか?私。 IntelliJ以外で上記のアプリケーションを正常に実行する方法は? – alwi
Gradle 'bootRepackage'タスクがそれを行います。ありがとう!あなたは私がそれを受け入れることができるように答えを形成することができます... – alwi