代码之家  ›  专栏  ›  技术社区  ›  Zixradoom

在一个构建中渐变所有内容

  •  1
  • Zixradoom  · 技术社区  · 9 年前

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

    • 核心库
    • Web应用程序(战争插件)
    • 服务器(应用程序插件)
    • 客户
    • 客户端战争(战争插件)

    Web应用程序、服务器和客户端都依赖于核心。服务器依赖于Web应用程序,因为它将使用嵌入式Jetty作为管理页面。客户战争取决于客户。ClientWar将部署到web服务器上,作为web启动应用程序分发客户端。

    我想知道的是,如何告诉服务器项目它依赖于Web App,需要将其复制到其分发结构中的适当位置。我还想知道如何告诉Client War项目依赖于Client项目,并将Client jar及其所有依赖项复制到适当的位置以构建War归档。

    我计划在下面使用服务器的应用程序插件 <root>/src/dist 会有一个 webapp 一个或可能多个web应用程序将驻留的目录。预期 网络应用程序 目录将是战争文件。

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

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

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   Community CDub    7 年前

    我相信我已经解决了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应用程序构建.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