2016-04-27 3 views
4

Ich arbeite an Gradle Skript, wo ich zwei separate Liste von cognos und anderen Abhängigkeiten haben.Kompilieren Sie den Quellcode mit zwei verschiedenen Abhängigkeiten in einem einzelnen build.gradle

Liste 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 

und Liste 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 

Ich brauche meine Quellcode zu kompilieren, zuerst mit Liste 1 dependenciesand dann Liste 2 Abhängigkeiten und veröffentlicht das Artefakt mit folgenden Namen in artifactory .

Artifact mit Liste 1 und 2 Abhängigkeiten

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

Ich kann es mit build.gradle tun, aber ich kann es in zwei separaten build.gradle scripts.I tun bin nicht sicher, wie wir dieses Ziel erreichen können in signle build.gradle script.Can jemand eine Idee, wie es in einzelner build.gradle zu erreichen

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' 
} 
+0

Wären Sie offen für die Verwendung eines externen "Treiber" -Skripts, um diese eine Gradle-Datei mehrmals mit der Version als Parameter aufzurufen? – RaGe

+0

können Sie bitte mehr ausarbeiten? – Sushant

Antwort

0

in Ihrem build.gradle, ersetzt cognos und App-Version mit einem Parameter:

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}" 
} 

Dann können Sie manuell diese ein paar Mal laufen:

gradle build -PcognosVersion=xxxx 

Wenn Sie das auch automatisieren möchten, können Sie einen zweiten gradle Treiber Skript release.gradle schreiben:

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() 
    } 
} 

die Sie können ausgeführt werden als: gradle -b release.gradle

+0

Ich stimme zu, aber in Zukunft, wenn sie einige Abhängigkeiten in der Liste 1 und 2 hinzufügen, die völlig anders sind oder die Abhängigkeit in Liste 1 und nicht in 2 dann funktioniert diese Lösung nicht – Sushant

+0

In der Zukunft ist es immer möglich, hinzuzufügen etwas an Ihrem Build-Skript, das Ihre aktuelle Konfiguration zerstört. Meine Antwort adressiert das Problem, wie es in Ihrer Frage angegeben ist. Es ist einfach genug, es auf die Situation auszudehnen, die Sie beschreiben. – RaGe

+0

Ich habe meine Frage jetzt aktualisiert, damit Sie eine klarere Vorstellung von der Anforderung erhalten, – Sushant

Verwandte Themen