gpt4 book ai didi

java - Gradle 一站式构建

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:35 24 4
gpt4 key购买 nike

我想使用 Gradle 构建一个 java 项目,并且我想按如下方式构建它。

  • 核心库
  • Web 应用程序(war 插件)
  • 服务器(应用程序插件)
  • 客户端
  • Client War( war 插件)

Web App、服务器和客户端都依赖于核心。服务器依赖于 Web 应用程序,因为它将使用嵌入式 Jetty 将其用作管理页面。客户 war 取决于客户。 Client War 将部署到 Web 服务器,以便将客户端作为 Web 启动应用程序进行分发。

我想知道的是如何告诉服务器项目它依赖于 Web 应用程序并且需要将其复制到其分发结构中的正确位置。我还想知道如何告诉 Client War 项目依赖于 Client 项目,并将 Client jar 及其所有依赖项复制到正确的位置以构建 war 存档。

我计划使用服务器的应用程序插件,所以在<root>/src/dist下将会有一个webapp一个或多个 Web 应用程序将驻留的目录。预计 webapp 中包含的文件目录将是war文件。

这是一个新项目,因此它可以遵循 Gradle 的标准构建约定以及 Gradle 期望的项目布局。

理想情况下,客户端工件将在某个时候发布到内部 Artifactory 或 Sonatype Nexus 存储库,以便可以在版本支持的情况下构建客户端 war 。

到目前为止我已经找到了以下资源。

最佳答案

我相信我已经解决了问题的 Web 应用程序依赖部分。客户之战目前是注定失败的。

服务器构建.gradle

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'application'

targetCompatibility = 1.8
sourceCompatibility = 1.8
version = '0.0.1-SNAPSHOT'
group = 'com.s2d'
mainClassName = 'com.simonsoftwaredesign.example.echo.server.EchoServerApp'

repositories {
mavenCentral()
}

configurations {
webContainer
}

dependencies {
compile project(':echo-core')
compile group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.7.v20160115'
compile group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.3.7.v20160115'

webContainer project(path: ':echo-admin', configuration: 'warApp')
}

task copyWebApps(dependsOn: configurations.webContainer, type: Copy) {
from { configurations.webContainer.collect { it } }
// I don't like how this is hard coded
// but I am not sure how to fix it
into 'src/main/dist/webapp'
}

installDist.dependsOn copyWebApps
distZip.dependsOn copyWebApps
distTar.dependsOn copyWebApps

Web 应用程序 build.gradle

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'war'

targetCompatibility = 1.8
sourceCompatibility = 1.8
version = '0.0.1-SNAPSHOT'
group = 'com.s2d'

configurations {
warApp
}

repositories {
mavenCentral()
}

dependencies {
providedCompile project(':echo-core')
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

artifacts {
warApp war
}

Gradle projects depending on artifacts created by sibling projects

关于java - Gradle 一站式构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com