Skip to content

Commit

Permalink
cleanup & factorization of build steps
Browse files Browse the repository at this point in the history
  • Loading branch information
unknown committed Nov 18, 2010
1 parent 4f91169 commit 7a6a2d8
Show file tree
Hide file tree
Showing 36 changed files with 548 additions and 1,425 deletions.
45 changes: 15 additions & 30 deletions pdePlugin/specs.rst
Expand Up @@ -5,14 +5,13 @@
CLEAN
=====

- delete du $buildDirectory qui est dans le workspace hudson
- delete du ``$buildDirectory`` qui est dans le workspace hudson

si eclipse 3.3
--------------
- **si eclipse 3.3** :

- delete du dossier "links" dans la target platform et recréation de celui ci mais vide
- ajout du fichier link pour l'appli bidon "rcpcleaner" dans la TP
- démarrage de la TP avec l'option ``-application com.thalesgroup.rcpcleaner.application -clean`` pour nettoyer les extensions de la TP
+ delete du dossier ``links`` dans la target platform et recréation de celui ci mais vide
+ ajout du fichier link pour l'appli bidon **rcpcleaner** dans la TP
+ démarrage de la TP avec l'option ``-application com.thalesgroup.rcpcleaner.application -clean`` pour nettoyer les extensions de la TP

INIT
====
Expand All @@ -22,13 +21,13 @@ INIT
PROCESS RESOURCES
=================

- en fonction de la liste des features donnée dans le script gradle, générer le fichier .map dans le ``$buildDirectory/maps``. le fichier .map devra contenir la liste des IDs des features ou plugins contenus dans les features ainsi que leur localisation physique sous le format suivant ::
- en fonction de la liste des features donnée dans le script gradle, générer le fichier ``.map`` dans le ``$buildDirectory/maps``. le fichier ``.map`` devra contenir la liste des IDs des features ou plugins contenus dans les features ainsi que leur localisation physique sous le format suivant ::
feature@id.de.la.feature=COPY,/répertoire/contenant/les/features,répertoire.de.la.feature
plugin@id.du.plugin=COPY,/répertoire/contenant/les/plugins,répertoire.du.plugin

- copie du build.properties avec les options de fetch qui vont bien (skipFetch et skipMaps commentés) dans ``$buildDirectory/builder``
- copie du customTargets.xml avec les targets de fetch qui vont bien ``$buildDirectory/builder`` ::
- copie du build.properties avec les options de fetch qui vont bien (``skipFetch`` et ``skipMaps`` commentés) dans ``$buildDirectory/builder``
- copie du ``customTargets.xml`` avec les targets de fetch qui vont bien ``$buildDirectory/builder`` ::

<target name="checkLocalMaps">
<available property="skipMaps" file="${buildDirectory}/maps" />
Expand Down Expand Up @@ -70,29 +69,15 @@ PROCESS RESOURCES
</target>
...

si build de product
-------------------
+ ajout dans la ligne de commande de l'option ``Dproduct=/dossier.du.product/machin.product`` (le slash part depuis ``$buildDirectory/plugins``)
sinon
-----
+ génération du allElements.xml avec toutes les features buildées (en fonction du contenu du fichier gradle) dans ``$buildDirectory/builder``
- **si build de product** : ajout dans la ligne de commande de l'option ``Dproduct=/dossier.du.product/machin.product`` (le slash part depuis ``$buildDirectory/plugins``)

- **si build de feature** : génération du ``allElements.xml`` avec toutes les features buildées (en fonction du contenu du fichier gradle) dans ``$buildDirectory/builder``

si eclipse 3.3 (usePreviousLinks = true)
----------------------------------------
+ génération des fichiers .link depuis les dépendances dans le script gradle (à générer dans le dossier links de la TP) attention -> pas de /eclipse à la fin des extensions !!!
- **si eclipse 3.3 (usePreviousLinks = true)**

+ démarrage de la TP avec l'option ``-application com.thalesgroup.rcpcleaner.application -clean`` pour résoudre les extensions dans la TP.
si eclipse 3.5 (usePreviousLinks = false)
-----------------------------------------
+ génération de l'option pluginPath pour la passer en ligne de commande. Attention -> rajouter un /eclipse si il n'est pas présent à la fin des extensions !!!
+ génération des fichiers .link depuis les dépendances dans le script gradle (à générer dans le dossier links de la TP) attention -> pas de ``/eclipse`` à la fin des extensions !!!
+ démarrage de la TP avec l'option ``-application com.thalesgroup.rcpcleaner.application -clean`` pour résoudre les extensions dans la TP.

BUILD
=====

+ execution de la commande PDE

PUBLISH
=======
- **si eclipse 3.5 (usePreviousLinks = false)**

+ pareil qu'avant
+ génération de l'option pluginPath pour la passer en ligne de commande. Attention -> rajouter un ``/eclipse`` si il n'est pas présent à la fin des extensions !!!
@@ -0,0 +1,5 @@
package com.thalesgroup.gradle.pde;

public enum BuildType {
feature, product;
}
Expand Up @@ -31,102 +31,103 @@ import org.gradle.api.Project
import com.thalesgroup.gradle.pde.tasks.feature.*

public class FeaturePdeBuild implements Plugin<Project> {

public static final String CLEAN_TASK_NAME = "pdeClean";
public static final String INIT_TASK_NAME = "pdeInit";
public static final String PROCESS_RESOURCES_TASK_NAME = "pdeProcessResources";
public static final String PDE_BUILD_TASK_NAME = "pdeBuild";
public static final String UPLOAD_TASK_NAME = "pdeUpload";


public void apply(final Project project) {
HashMap<String, ?> customValues = new HashMap<String, String>();
FeaturePdeConvention featurePdeConvention = new FeaturePdeConvention(project, customValues);
project.setProperty("FeaturePde", featurePdeConvention);
configureClean(project, customValues);
configureInit(project, customValues);
configureProcessResources(project, customValues);
configurePdeBuild(project, customValues);
configureDeploy(project, customValues);


//Built from the given property file
//The properties are added at the end of the command line
//The command line properties override the default properties from the file
project.afterEvaluate {
String additionalPropertiesPath = featurePdeConvention.getAdditionalPropertiesPath()
if (additionalPropertiesPath) {
File propertiesFile = new File(additionalPropertiesPath)
FileInputStream fis = new FileInputStream(propertiesFile)
Properties properties = new Properties()
properties.load(fis)
for (String propertyName: properties.propertyNames()) {
try{
Field field = FeaturePdeConvention.class.getDeclaredField(propertyName)
field.setAccessible(true)
field.set(featurePdeConvention, properties.getProperty(propertyName))
}
catch (java.lang.NoSuchFieldException nfe){
//The field is a custom field
customValues.put(propertyName, properties.getProperty(propertyName))
}
}
fis.close()
}

public static final String CLEAN_TASK_NAME = "pdeClean";
public static final String INIT_TASK_NAME = "pdeInit";
public static final String PROCESS_RESOURCES_TASK_NAME = "pdeProcessResources";
public static final String PDE_BUILD_TASK_NAME = "pdeBuild";
public static final String UPLOAD_TASK_NAME = "pdeUpload";


public void apply(final Project project) {
HashMap<String, ?> customValues = new HashMap<String, String>();
FeaturePdeConvention featurePdeConvention = new FeaturePdeConvention(project, customValues);
project.setProperty("FeaturePde", featurePdeConvention);
configureClean(project, customValues);
configureInit(project, customValues);
configureProcessResources(project, customValues);
configurePdeBuild(project, customValues);
configureDeploy(project, customValues);


//Built from the given property file
//The properties are added at the end of the command line
//The command line properties override the default properties from the file
/*
project.afterEvaluate {
String additionalPropertiesPath = featurePdeConvention.getAdditionalPropertiesPath()
if (additionalPropertiesPath) {
File propertiesFile = new File(additionalPropertiesPath)
FileInputStream fis = new FileInputStream(propertiesFile)
Properties properties = new Properties()
properties.load(fis)
for (String propertyName: properties.propertyNames()) {
try{
Field field = FeaturePdeConvention.class.getDeclaredField(propertyName)
field.setAccessible(true)
field.set(featurePdeConvention, properties.getProperty(propertyName))
}
catch (java.lang.NoSuchFieldException nfe){
//The field is a custom field
customValues.put(propertyName, properties.getProperty(propertyName))
}
}
fis.close()
}
}
*/
}

private void configureClean(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(CleanFeatureTask.class).allTasks(new Action<CleanFeatureTask>() {
public void execute(CleanFeatureTask task) {
task.setCustomValues(customValues);
}
});
project.getTasks().add(CLEAN_TASK_NAME, CleanFeatureTask.class).setDescription("Cleaning...");
}


private void configureInit(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(InitFeatureTask.class).allTasks(new Action<InitFeatureTask>() {
public void execute(InitFeatureTask task) {
task.setCustomValues(customValues);
}
});
project.getTasks().add(INIT_TASK_NAME, InitFeatureTask.class).setDescription("Initialization...");
}


private void configureProcessResources(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(ResourceFeatureTask.class).allTasks(new Action<ResourceFeatureTask>() {
public void execute(ResourceFeatureTask task) {
task.dependsOn(INIT_TASK_NAME);
task.setCustomValues(customValues);
}
});
project.getTasks().add(PROCESS_RESOURCES_TASK_NAME, ResourceFeatureTask.class).setDescription("Process resources.");
}


private void configurePdeBuild(final Project project, final Map<String, ?> customValues) {
project.getTasks().withType(PdeFeatureTask.class).allTasks(new Action<PdeFeatureTask>() {
public void execute(PdeFeatureTask pdeTask) {
pdeTask.dependsOn(PROCESS_RESOURCES_TASK_NAME);
pdeTask.setCustomValues(customValues);
}
});
project.getTasks().add(PDE_BUILD_TASK_NAME, PdeFeatureTask.class).setDescription("Launch PDE.");
}


private void configureDeploy(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(DeployFeatureTask.class).allTasks(new Action<DeployFeatureTask>() {
public void execute(DeployFeatureTask task) {
task.setCustomValues(customValues);
task.dependsOn(PDE_BUILD_TASK_NAME);
}
});
project.getTasks().add(UPLOAD_TASK_NAME, DeployFeatureTask.class).setDescription("Deploying...");
}

}

private void configureClean(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(CleanFeatureTask.class).allTasks(new Action<CleanFeatureTask>() {
public void execute(CleanFeatureTask task) {
task.setCustomValues(customValues);
}
});
project.getTasks().add(CLEAN_TASK_NAME, CleanFeatureTask.class).setDescription("Cleaning...");
}


private void configureInit(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(InitFeatureTask.class).allTasks(new Action<InitFeatureTask>() {
public void execute(InitFeatureTask task) {
task.setCustomValues(customValues);
}
});
project.getTasks().add(INIT_TASK_NAME, InitFeatureTask.class).setDescription("Initialization...");
}


private void configureProcessResources(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(ResourceFeatureTask.class).allTasks(new Action<ResourceFeatureTask>() {
public void execute(ResourceFeatureTask task) {
task.dependsOn(INIT_TASK_NAME);
task.setCustomValues(customValues);
}
});
project.getTasks().add(PROCESS_RESOURCES_TASK_NAME, ResourceFeatureTask.class).setDescription("Process resources.");
}


private void configurePdeBuild(final Project project, final Map<String, ?> customValues) {
project.getTasks().withType(PdeFeatureTask.class).allTasks(new Action<PdeFeatureTask>() {
public void execute(PdeFeatureTask pdeTask) {
pdeTask.dependsOn(PROCESS_RESOURCES_TASK_NAME);
pdeTask.setCustomValues(customValues);
}
});
project.getTasks().add(PDE_BUILD_TASK_NAME, PdeFeatureTask.class).setDescription("Launch PDE.");
}


private void configureDeploy(Project project, final Map<String, ?> customValues) {
project.getTasks().withType(DeployFeatureTask.class).allTasks(new Action<DeployFeatureTask>() {
public void execute(DeployFeatureTask task) {
task.setCustomValues(customValues);
task.dependsOn(PDE_BUILD_TASK_NAME);
}
});
project.getTasks().add(UPLOAD_TASK_NAME, DeployFeatureTask.class).setDescription("Deploying...");
}
}

Expand Up @@ -26,23 +26,22 @@ package com.thalesgroup.gradle.pde;

import org.gradle.api.GradleException;
import org.gradle.api.Project
import static com.thalesgroup.gradle.pde.tasks.Util.normalizePath;

public class FeaturePdeConvention extends PdeConvention {

private String featureName
private String[] features;

FeaturePdeConvention(Project project, Map customValues) {
super(project, customValues)
super(project, customValues);
}

@Override
public String getName() {
return this.featureName;
public String[] getFeatures() {
return this.features;
}

@Override
public String getType() {
return "Feature";
public BuildType getType() {
return BuildType.feature;
}


Expand Down
Expand Up @@ -26,13 +26,12 @@ package com.thalesgroup.gradle.pde;

import org.gradle.api.GradleException;
import org.gradle.api.Project
import static com.thalesgroup.gradle.pde.tasks.Util.normPathForAnt;

public abstract class PdeConvention {

Project project;
Map customValues;

String archiveNamePrefix;
String timestamp;
String buildDirectory;
String builderDir;
Expand Down Expand Up @@ -63,9 +62,7 @@ public abstract class PdeConvention {
this.customValues = customValues;
}

public abstract String getName();

public abstract String getType();
public abstract BuildType getType();

public String getBaseLocation() {
if (baseLocation == null) {
Expand Down Expand Up @@ -151,11 +148,23 @@ public abstract class PdeConvention {
return normPathForAnt(publishDirectory)
}

public String getCustomProperty(String key) {
return customValues.get(key);
}

public String getArchiveNamePrefix() {
if (archiveNamePrefix == null) {
archiveNamePrefix = "${buildId}-${jobVersion}.${timestamp}"
}
return archiveNamePrefix;
}



public void print() {
println "===================================================="
println "* PDE PARAMETERS *"
println "===================================================="
println getType() + " name : " + (getName() == null ? "" : getName());
println "Job version : " + (jobVersion == null ? "" : jobVersion);
println "Timestamp : " + (timestamp == null ? "" : timestamp);
println ""
Expand Down Expand Up @@ -194,4 +203,14 @@ public abstract class PdeConvention {
}
println "===================================================="
}
public static String normPathForAnt(String path) {
if (path == null) {
return null;
} else {
return path.replace('\\', '/');
}
}
}

0 comments on commit 7a6a2d8

Please sign in to comment.