java – 在单个build.gradle中使用两组不同的依赖项编译源代码

我正在使用gradle脚本,我有两个独立的认知列表和其他依赖项列表.

清单1:

cognos:a:10.1.1
cognos:b:10.1.1
cognos:c:10.1.1
cognos:d:10.1.1
com:axis:2.0.3
com:webroot:5.0.3

和清单2:

cognos:a:10.2.2
cognos:b:10.2.2
cognos:c:10.2.2
cognos:d:10.2.2
traven:nt:10.5.0
traven:txtx:5.2.1

我需要首先使用list 1依赖项编译我的源代码,然后列出2个依赖项,并在artifactory中使用以下名称发布工件.

具有列表1和列表2依赖项的工件

abc-1.0.0-cognos10.1.1
abc-1.0.0-cognos10.2.2

我可以用build.gradle来做,但我可以在两个单独的build.gradle脚本中完成.我不知道如何在signle build.gradle脚本中实现这个目标.有人知道如何在单个构建中实现它.gradle

apply plugin: 'java'


version = '1.0'
sourceCompatibility = 1.7
targetCompatibility = 1.7

//create a single Jar with all dependencies
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example','Implementation-Version': version,'Main-Class': 'com.mkyong.DateUtils'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

//Get dependencies from Maven central repository
repositories {
    mavenCentral()
}

//Project dependencies
dependencies {
    compile 'cognos:a:10.1.1
    compile  'cognos:b:10.1.1'
    compile  'cognos:c:10.1.1'
    compile  'cognos:d:10.1.1'
    compile 'traven:nt:10.5.0'
    compile 'traven:txtx:5.2.1'
}

解决方法

在build.gradle中,将cognos和app version替换为参数:

version = "1.0.0-cognos${cognosversion}"
sourceCompatibility = 1.7
targetCompatibility = 1.7

...

dependencies {
    compile "cognos:a:${cognosversion}"
    compile "cognos:b:${cognosversion}"
    compile "cognos:c:${cognosversion}"
    compile "cognos:d:${cognosversion}"
}

然后你可以手动运行几次:

gradle build -Pcognosversion=xxxx

如果您想自动执行此操作,则可以编写第二个gradle驱动程序脚本release.gradle:

defaultTasks  'performRelease'

task performRelease() << {
    ['10.1.1','10.2.2'].each{
        def tempTask = tasks.create(name: "execute_$it",type: GradleBuild)
        tempTask.buildFile='build.gradle'
        tempTask.tasks = ['build']
        tempTask.startParameter.projectProperties = [cognosversion: it]
        tempTask.execute()
    }
}

您可以执行以下操作:gradle -b release.gradle

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...