2017-04-12 17 views
1

Intellijを使用してアプリケーションを起動すると、すべて正常に動作していました。私は(Gradleのプラグインで:eu.appsatori.fatjarfatJarをしたときしかし、および実行します。それは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に関連する回答のみをここに入力してください。

+1

は 'fatjar'プラグインを使用しないでください...春ブーツがすでに作成されます。ここでは

enter image description here

は私のbuild.gradleファイルでありますファットジャー...あなたは今、2つの競合するメカニズムを持っています.... –

+0

どうすればそのプラグインなしでファットジャーを構築できますか?私。 IntelliJ以外で上記のアプリケーションを正常に実行する方法は? – alwi

+2

Gradle 'bootRepackage'タスクがそれを行います。ありがとう!あなたは私がそれを受け入れることができるように答えを形成することができます... – alwi

答えて

2
gradle clean build 
gradle bootRepackage 

結果:

enter image description here

関連する問題