当前位置: 首页 > 知识库问答 >
问题:

从Gradle multi project构建构建一个完全可执行的Spring Boot 1.3 war

蒋寒
2023-03-14
buildscript {
    repositories {
        mavenCentral()
    }
    ext {
        springBootVersion = '1.3.0.RELEASE'
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
    }
}

allprojects {
    //Put instructions for all projects
    repositories {
        mavenCentral()  // jcenter is missing spring-orm.4.1.6.RELEASE jar file so try mavenCentral first
        jcenter {
            url "http://jcenter.bintray.com/"
        }
        maven { url 'http://repo.opensourceagility.com/release' }
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'spring-boot'
}
apply plugin: 'war'

dependencies {
    // Include related projects
    compile project(':project-model')
    compile project(':project-dynamoDB')

    // Core Spring Boot - note version is set in main build.gradle file
    compile 'org.springframework.boot:spring-boot-starter-web'

    // Remove Tomcat (included in -web) and include Jetty instead
    providedRuntime 'org.springframework.boot:spring-boot-starter-jetty'

    // Other Spring modules
    compile 'org.springframework.boot:spring-boot-starter-social-facebook'
    compile 'org.springframework.boot:spring-boot-starter-social-linkedin'
    compile 'org.springframework.social:spring-social-google:1.0.0.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
    compile 'org.springframework.boot:spring-boot-starter-security'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-devtools'
    compile 'org.springframework:spring-context'
    compile 'org.springframework:spring-context-support'
}

configurations {
    providedRuntime.exclude group: 'org.springframework.boot', module:'spring-boot-starter-tomcat'
    all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' // exclude when using log4j 
}

springBoot {
    mainClass = 'rs.web.Weblication'
    executable = true   
}

bootRun {
    addResources = true
}

processResources {
    // exclude resources if they look like they're profile dependent but don't match the current env/profile
    eachFile { d ->
        if(d.name.endsWith('.xml') || d.name.endsWith('.yaml') || d.name.endsWith('.properties')) {
            //def fname = d.name.replaceFirst(~/\.[^\.]+$/, '')
            //if(fname.indexOf("-") > -1 && ! fname.endsWith("-" + environment)) {
            //  d.exclude()
            //} else {
            // replace @variables@ listed below in properties/config files
            filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
                    activeProfiles: environment
                ])
            //}
        }
    }
}

war {
    baseName = 'project-web'
    version = '1.0.0'
    manifest {
        attributes 'Implementation-Title': baseName,
                   'Implementation-Version': version
    }
    webXml = file('src/main/resources/web.xml')
    // rename the war task which has profiles appended from warName-profile,profile2.war
    // to warName-profile.profile2.war
    classifier = environment.replaceAll(',','-')
}

与一个单一的项目,我有它的工作很好。

共有1个答案

窦志新
2023-03-14

啊哈,好吧,我构建了一个测试多项目构建,它工作正常,所以它显然是上面的配置。

我经历了一个消除过程,结果发现有问题的地方是线路

classifier = environment.replaceAll(',','-')

它用于将环境变量作为名称的一部分来重命名文件。这个过程似乎妨碍了脚本的添加;如果真的有必要,也许可以在之后应用。

 类似资料:
  • 我刚刚将我的构建脚本移到了使用 gradle-script-kotlin,使用 gradle 3.4 和 gradle-script-kotlin 0.6。 我可以让构建脚本生成一个jar,但是清单不包括主类名。根据我找到的其他帖子,我尝试过以KT和Kt结尾的主类名。 构建脚本如下所示: 我还想创建一个包含运行时依赖项的胖jar,我可以看到很多关于时髦构建脚本的示例,但对于gradle-scrip

  • 有时我需要在我的设备上运行一个命令或脚本,但它们不可用或不存在。 除了那些已经在其上可用的命令外,我们是否可以在设备的中添加一些额外的命令? 例如,将命令添加到我的设备(我的设备的API低于19),这在我的设备上是不可用的。 我知道如何使用获取设备上可用命令的列表 但我想添加更多的自定义命令和脚本,做一些特殊的工作。 有什么办法可以做到吗?还是不可能?

  • 问题内容: 我试图使用maven为名为“ logmanager”的小型家庭项目生成可执行jar,如下所示: 如何使用Maven创建具有依赖项的可执行JAR? 我将此处显示的代码段添加到pom.xml中,并运行了mvn assembly:assembly。它在logmanager / target中生成两个jar文件:logmanager-0.1.0.jar和logmanager-0.1.0-jar

  • 我想使用pyInstaller的单文件夹模式,但我不想每次都收集所有依赖项。 大多数情况下,我可以重用它以前打包的所有依赖项,我只需要可执行文件,我想如果我能在构建过程中尽快停止,我会在构建过程中节省10~20分钟。exe文件已生成。 我知道用-F标志将所有依赖项打包到一个可执行文件中,但这不是我想要的。我只希望pyInstaller在打包步骤之前停止。 我希望生成在可能输出时立即停止:

  • 我想为一个稳定的JavaFX(Java8)Maven构建设置一个原型,它将生成一个(总是)从命令行运行的可执行JAR。而且最好不需要构建UberJar或类似的工具。 当我们使用Netbeans的“Maven JavaFX”原型时,生成的JAR文件将在构建之后运行。随着项目的发展,我们发现有时JAR不能从命令行运行。需要对Maven POM进行一些编辑,以“鼓励”程序再次从命令行运行。这适用于Lin

  • 我在htmlunitdriver.java文件中做了一个补丁,如下文所述:使用WebDriver(HtmlUnit,Ruby绑定)时是否可能忽略JavaScript异常 我已经学习了关于selenium build wiki和自述文件中的说明,以及这里给出的技巧:构建selenium服务器项目 但是,我没有一个像selenium-server-standalone-2.25.0.jar这样的jar