alw*_*lwi 3 jar gradle spring-boot
使用时启动我的应用程序时一切正常Intellij.但当我fatJar(使用gradle插件:) eu.appsatori.fatjar并执行时:
java -jar myapp.jar
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
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)
...
Run Code Online (Sandbox Code Playgroud)
看起来它没有找到自动配置类META-INF/spring.factories.
如何添加此文件?它的内容应该是什么?
我有以下构建脚本:
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'
}
Run Code Online (Sandbox Code Playgroud)
我的示例代码是:
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;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
注意:这个问题基于SpringBoot  - 制作jar文件 - 在META-INF/spring.factories 
中找不到自动配置类,其中所有答案都指的是构建Maven.请只提供与Gradle此相关的答案.
gradle clean build
gradle bootRepackage
Run Code Online (Sandbox Code Playgroud)
结果:
这是我的build.gradle文件:
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4602 次  |  
        
|   最近记录:  |