Spring boot thin jar gradle配置

时间:2015-04-07 23:53:56

标签: java gradle spring-boot intellij-14

我有一个使用Idea编写的Java应用程序,它包含gradle的几个JAR(所有依赖项都在下面)。我需要从中构建一个瘦JAR(即在/ libs文件夹中单独使用大多数库)。但我只能通过java -jar运行我的应用程序,如果它是一个胖罐子(即包括其内部的所有罐子)。如果我使用简单的jar' gradle任务,它可以很好地构建我的瘦罐,但我无法执行它,因为它找不到任何需要的库(即spring-boot- *等)。

请您告诉我我应该在我的任务中写些什么来创建一个jar,它会考虑到库中相对于jar的/ libs文件夹。

所以我的依赖项部分是:

dependencies {

    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile("org.hibernate:hibernate-core:4.3.8.Final")
    compile("org.hibernate:hibernate-entitymanager:4.3.8.Final")
    compile("org.springframework:spring-core:4.1.4.RELEASE")
    compile("org.springframework:spring-beans:4.1.4.RELEASE")
    compile("org.springframework:spring-context:4.1.4.RELEASE")
    compile("org.springframework:spring-jdbc:3.1.0.RELEASE")
    compile("org.springframework:spring-orm:4.1.2.RELEASE")
    compile("org.springframework:spring-tx:4.1.2.RELEASE")
    compile('org.slf4j:slf4j-api:1.7.10')
    compile("mysql:mysql-connector-java:5.1.9")
    compile("com.mchange:c3p0:0.9.5")
    compile("org.hibernate:hibernate-c3p0:4.3.7.Final")
    compile("org.apache.commons:commons-lang3:3.0")
    compile("org.aspectj:aspectjweaver:1.8.4")
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile("org.springframework.boot:spring-boot-starter-tomcat")
    compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity3:2.1.1.RELEASE")
    compile("org.apache.commons:commons-lang3:3.0")
}

将所有需要的jar复制到lib子文件夹的任务:

task copyToLib(type: Copy) {
    into "$buildDir/libs/lib"
    from configurations.runtime
}

构建jar(无法启动)的任务

jar {
    manifest {
        attributes 'Implementation-Title': 'MyApp',
                'Implementation-Version': version,
                'Start-Class': 'my.pkg.Application',
                'Main-Class': 'org.springframework.boot.loader.JarLauncher'
    }
    baseName = 'MyApp'
    version =  '1.6'
}

一个构建胖罐的任务(运行得很好)

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'MyApp',
                'Implementation-Version': version,
                'Main-Class': 'my.pkg.Application'
    }
    baseName = project.name + '-fat'

    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

    with jar
}

0 个答案:

没有答案