gpt4 book ai didi

gradle - 如何告诉 gradle 构建依赖项目的文件并将其上传到本地 maven

转载 作者:行者123 更新时间:2023-12-05 01:05:51 25 4
gpt4 key购买 nike

我有一个多项目问题,Gradle 的文档没有任何信息(并且在 stackoverflow 上也找不到)。任何帮助/指导将不胜感激。

这是我的项目布局:

  • 项目 LeftArm:生成一个 jar 文件
  • 项目 RightArm:生成 jar 文件
  • 项目 AllArms:取决于项目 LeftArm 和 RightArm 并生成 war文件

  • 当我在 AllArms 项目中运行 'gradle build uploadArchives' 时,它会构建 LeftArm 和 RightArm 项目,但不会上传 jar文件(由 LeftArm 和 RightArm 项目生成)到本地 Maven 存储库。

    这是我的 build.gradle文件:

    project LeftArm:
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'maven'

    ext.artifactId = 'LeftArm'
    archivesBaseName = ext.artifactId // sets filename of warfile/jarfile output
    group = 'mygroup'
    version = '1.0'

    buildscript
    {
    repositories
    {
    mavenLocal()
    }
    }

    jar
    {
    from(sourceSets['main'].allJava)
    }

    dependencies
    {
    compile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    compile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
    }

    def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

    // NOTE: this project will publish to the local Maven repo.
    uploadArchives
    {
    repositories
    {
    mavenDeployer
    {
    repository(url: localRepoURL)
    addFilter('jar')
    {
    artifact, file -> artifact.ext == 'jar'
    }
    }
    }
    }

    ...

    project RightArm:
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'maven'

    ext.artifactId = 'RightArm'
    archivesBaseName = ext.artifactId // sets filename of warfile/jarfile output
    group = 'mygroup'
    version = '1.0'

    buildscript
    {
    repositories
    {
    mavenLocal()
    }
    }

    jar
    {
    from(sourceSets['main'].allJava)
    }

    dependencies
    {
    compile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    compile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
    }

    def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

    // NOTE: this project will publish to the local Maven repo.
    uploadArchives
    {
    repositories
    {
    mavenDeployer
    {
    repository(url: localRepoURL)
    addFilter('jar')
    {
    artifact, file -> artifact.ext == 'jar'
    }
    }
    }
    }

    ...

    project AllArms:
    apply plugin: 'java'
    apply plugin: 'war'
    apply plugin: 'maven'
    apply plugin: 'idea'
    apply plugin: 'eclipse'

    ext.artifactId = 'AllArms'
    ext.sourceCompatibility = 1.6
    archivesBaseName = artifactId // sets filename of warfile/jarfile output
    group = 'mygroup'
    version = '1.0'

    def gwtVersion = '2.2.0'

    repositories
    {
    mavenLocal()
    mavenCentral()
    }

    dependencies
    {
    compile project(':LeftArm')
    compile project(':RightArm')
    // ### NOTE: this is where the build breaks b/c uploadArchives task is not executed ###
    compile group: group, name: 'LeftArm', version:version
    compile group: group, name: 'RightArm', version:version
    providedCompile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    providedCompile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
    providedCompile group: 'com.google.gwt', name:'gwt-user', version:gwtVersion
    providedCompile group: 'com.google.gwt', name:'gwt-dev', version:gwtVersion
    providedCompile group: 'org.gwtext', name:'gwtext', version:'2.0.4'
    }

    task compileGwt (dependsOn: classes, type: JavaExec) {
    project.ext
    {
    gwtDir = "${project.buildDir}/gwt"
    extraDir = "${project.buildDir}/extra"
    gwtModuleName = 'MyModuleName'
    }
    inputs.source sourceSets.main.java.srcDirs
    inputs.dir sourceSets.main.output.resourcesDir
    outputs.dir project.gwtDir

    // Workaround for incremental build (GRADLE-1483)
    outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()

    doFirst
    {
    file(project.gwtDir).mkdirs()
    }

    main = 'com.google.gwt.dev.Compiler'

    classpath
    {
    [
    sourceSets.main.java.srcDirs, // Java source
    sourceSets.main.output.resourcesDir, // Generated resources
    sourceSets.main.output.classesDir, // Generated classes
    sourceSets.main.compileClasspath, // Deps
    ]
    }

    args =
    [
    project.gwtModuleName, // Your GWT module
    '-war', project.gwtDir,
    '-logLevel', 'INFO',
    '-localWorkers', '2',
    '-compileReport',
    '-extra', project.extraDir,
    ]

    maxHeapSize = '256M'
    }

    buildscript
    {
    repositories
    {
    mavenLocal()
    }
    }

    sourceSets
    {
    main
    {
    resources
    { srcDir('src/main/java').include('**/client/**').include('**/public/**').include('**/*.gwt.xml')
    }
    }
    }

    war.dependsOn(compileGwt)
    war
    {
    def gwtOutputTree = project.fileTree(project.gwtDir)
    from(gwtOutputTree)
    baseName = artifactId
    }

    task classesJar(type: Jar) {
    dependsOn(classes)
    baseName = artifactId
    }

    artifacts
    {
    archives war, classesJar
    }

    def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

    // NOTE: this project will publish to the local Maven repo.
    uploadArchives
    {
    repositories
    {
    mavenDeployer
    {
    repository(url: localRepoURL)

    addFilter('war')
    {
    artifact, file -> artifact.ext == 'war'
    }
    }
    }
    }

    最佳答案

    uploadArchives不打算用于安装到本地 Maven 存储库。相反,使用 install任务。

    关于gradle - 如何告诉 gradle 构建依赖项目的文件并将其上传到本地 maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847758/

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