Créer le fichier POM de génération des sources - 6.4

Talend Software Development Life Cycle - Guide de bonnes pratiques

author
Talend Documentation Team
EnrichVersion
6.4
EnrichProdName
Talend Big Data
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
task
Administration et monitoring
Création et développement
EnrichPlatform
Studio Talend
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend JobServer
Talend Repository Manager

Procédure

  1. Créez un fichier POM (au format XML), nommé BuildJob_pom.xml par exemple, contenant les informations sur le projet Maven et sa configuration ainsi que les instructions pour générer les sources. Il peut ressembler à ce qui suit (notez que les parties en italique doivent être modifiées) :
    • Recommandé : Génération locale (mode script)

      Lorsque vous choisissez une génération en mode script (local-generate), vous n'avez pas besoin de démarrer le Talend CommandLine car il sera démarré puis arrêté automatiquement, mais vous devez spécifier dans ce fichier POM :
      • les propriétés liées au Talend CommandLine utilisé pour générer les sources :
        • <product.path>: chemin d'accès au Talend CommandLine

        • <commandline.workspace> : chemin d'accès au workspace, dossier racine où tous vos projets ont été stockés

        • <projectsTargetDirectory> : dossier où seront générées toutes les sources de votre projet

        • <deploy.version>: définit la version des éléments à publier sur Nexus et permet d'appliquer les étiquettes -SNAPSHOT à ces éléments (qui peuvent être des Jobs, des Routines, des Test cases, etc.). Ce paramètre affecte le résultat de la génération.

          Exemple de version snapshot : <deploy.version>1.0.0-SNAPSHOT</deploy.version>

          Exemple de version release : <deploy.version>1.0.0</deploy.version>
          Conseil : la seule exigence est de stocker tous les projets dans le dossier workspace, ce qui signifie que vous avez la possibilité de créer une tâche Jenkins pour cloner les projets et les copier (leurs dossiers uniquement) dans le workspace.
      • les paramètres de configuration qui permettent de personnaliser l'exécution :
        • <itemFilter> : pour filtrer la génération sur des éléments du projet. Ce paramètre vous permet de générer uniquement certains Jobs.

          Pour des exemples de filtres, consultez Filtrer l'exécution du projet sur un ou plusieurs Job(s) en particulier.

        • <commandlineUser> : pour définir qui est l'utilisateur du Talend CommandLine

        • <jvmArguments> : pour définir quelle mémoire sera allouée à la génération

      • le référentiel Nexus où est stocké le plugin CI Builder : le paramètre <pluginRepository> vous permet de spécifier l'URL du référentiel thirdparty de Nexus dans lequel vous avez chargé les fichiers du CI Builder.

      La documentation Maven du plugin CI Builder est embarquée dans l'archive du CI Builder, consultez les fichiers contenus dans le dossier <CIBuilder_home>/help pour plus d'informations.

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
      <groupId>org.talend</groupId>
      <artifactId>buildsources</artifactId>
      <version>A.B.C</version>
      
      <properties>
          <!-- Required. Commandline application workspace and Studio path, only for local(script) mode -->
          <commandline.workspace>commandline_workspace_path</commandline.workspace>   
          <product.path>studio_path</product.path>
          <!-- Optional. Specify target directory where generated sources will be stored -->
          <projectsTargetDirectory>${basedir}/projectSources</projectsTargetDirectory> 
          <!-- Optional. Specify version for the artifact to be built. Can be set for each Job independently -->
          <deploy.version>A.B.C-SNAPSHOT</deploy.version>
      </properties>
      
      <build>
          <plugins>
              <plugin>
                  <groupId>org.talend</groupId>
                  <artifactId>ci.builder</artifactId>
                  <version>A.B.C</version>
                  <executions>
                      <execution>
                          <phase>generate-sources</phase>
                          <goals>
                              <!-- local(script) mode -->
                              <goal>local-generate</goal>
                          </goals>
                          <configuration>
                              <!-- Optional. Specify CommandLine user -->
                              <commandlineUser>jobbuilder@talend.com</commandlineUser>
                              <!-- Optional. Jvm Parameters for local(script) mode -->
                              <!-- <jvmArguments>-ea -Xms512m -Xmx1300m -XX:+CMSClassUnloadingEnabled -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:+HeapDumpOnOutOfMemoryError</jvmArguments> -->
                              <!-- Optional. Parameter used to filter on specific Job status (TEST, DEV, PROD, etc)  -->
                              <!-- <itemFilter>(status=TEST)or(status=PROD)or(status="")</itemFilter> -->
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>
      
      <pluginRepositories>
          <!-- everything through Maven Central Proxy -->
              <pluginRepository>
                  <id>Central</id>
                  <name>Central</name>
                  <url>http://<host>:<port>/nexus/content/repositories/central</url>
              </pluginRepository>
              <pluginRepository>
                  <id>thirdparty</id>
                  <name>thirdparty</name>
                  <url>http://<host>:<port>/nexus/content/repositories/thirdparty/</url>
              </pluginRepository>
      </pluginRepositories>
      
      </project>
    • Alternative: Génération distante (mode serveur)

      Lorsque vous choisissez une génération en mode serveur (generate), votre Talend CommandLine doit être démarré (une installation en tant que service est recommandée), et vous devez spécifier ses paramètres d'accès dans le projet Jenkins GenerateSources.

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
      <groupId>org.talend</groupId>
      <artifactId>buildsources</artifactId>
      <version>A.B.C</version>
      <packaging>pom</packaging>
      
      <build>
          <plugins>
              <plugin>
                  <groupId>org.talend</groupId>
                  <artifactId>ci.builder</artifactId>
                  <version>A.B.C</version>
                  <executions>
                      <execution>
                          <phase>generate-sources</phase>
                          <goals>
                              <!-- server mode -->
                              <goal>generate</goal>
                          </goals>
                          <configuration>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>
      
      <pluginRepositories>
          <!-- everything through Maven Central Proxy -->
              <pluginRepository>
                  <id>Central</id>
                  <name>Central</name>
                  <url>http://<host>:<port>/nexus/content/repositories/central</url>
              </pluginRepository>
              <pluginRepository>
                  <id>thirdparty</id>
                  <name>thirdparty</name>
                  <url>http://<host>:<port>/nexus/content/repositories/thirdparty/</url>
              </pluginRepository>
      </pluginRepositories>
      
      </project>

      Pour plus d'informations concernant les cycles Maven, consultez la documentation Apache Maven.

  2. Vous pouvez également personnaliser certaines informations qui sont générées par défaut pour votre projet depuis le Studio Talend, via le menu Project Settings > Build > Maven > Default > Project : depuis celui-ci vous pouvez modifier le <groupId> par défaut qui sera utilisé lors de la publication sur Nexus, la <version> ainsi que d'autres informations par défaut.