web-dev-qa-db-fra.com

Fichier Maven POM pour l'installation de plusieurs bibliothèques commerciales tierces

J'ai un tas de projets qui dépendent d'un ensemble de bibliothèques commerciales tierces. Nous n'avons actuellement pas de référentiel d'entreprise, je dois donc installer les bibliothèques dans mon propre référentiel local.

Fonctionnement mvn install:installFile -Dpackaging=jar -Dfile=<file> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> pour chaque fichier est assez fastidieux. Pourrait créer un fichier bat, mais existe-t-il un moyen de le faire en utilisant maven?

Je pense à un projet pour tous les pots et un seul fichier pom avec tous les identifiants de groupe, les identifiants d'artefact, les versions et les noms de fichiers, puis la possibilité de simplement exécuter mvn install dans ce projet, ou quelque chose dans ce sens.

Est-ce que quelque chose comme ça est possible?


Note: J'utilise Maven 3, mais une solution compatible Maven 2 serait bien aussi.

19
Svish

Récemment découvert une nouvelle solution à cela. Fondamentalement, vous pouvez créer un référentiel local dans le projet qui peut être archivé avec le reste du code source. Blogué à ce sujet ici: http://www.geekality.net/?p=2376 .

L'essentiel est de déployer des dépendances dans un dossier de votre projet.

mvn deploy:deploy-file
    -Durl=file:///dev/project/repo/
    -Dfile=somelib-1.0.jar
    -DgroupId=com.example
    -DartifactId=somelib
    -Dpackaging=jar
    -Dversion=1.0

Et puis informez simplement Maven à ce sujet et utilisez les déclarations de dépendance comme d'habitude via votre pom.xml.

<repositories>
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.example</groupId>
    <artifactId>somelib</artifactId>
    <version>1.0</version>
</dependency>

Pas extrêmement Maven'y, mais cela fonctionne et déplacer les dépendances vers un référentiel d'entreprise devrait être assez simple.

12
Svish

Vous pouvez simplement créer pom.xml avec plusieurs exécutions de install-file objectif du plugin d'installation Maven. En supposant que ces fichiers sont déjà disponibles localement quelque part (ou vous pouvez les télécharger en utilisant le plugin Wagon ).

  <project>
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.somegroup</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0</version>

    <build>
      <plugins>
        <plugin>
          <groupId>org.Apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.4</version/>
          <executions>
            <execution>
              <id>install1</id>
              <phase>package</phase>
              <goals>
                <goal>install-file</goal>
              </goals>
              <configuration>
                <file>lib/your-artifact-1.0.jar</file>
                <groupId>org.some.group</groupId>
                <artifactId>your-artifact</artifactId>
                <version>1.0</version>
                ... other properties
              </configuration>
            </execution>
            <execution>
              <id>install2</id>
              <phase>package</phase>
              <goals>
                <goal>install-file</goal>
              </goals>
              ... etc

            </execution>
            ... other executions
          </executions>
        </plugin>
      </plugins>
    </build>
  </project>

Donc, avec le fragment de pom ci-dessus mvn package devrait faire l'affaire.

Il y a bon tutoriel Maven POM et référence POM .

41
Eugene Kuleshov