Question

Je suis nouveau Maven et de travailler sur la création d'une construction pour mon entreprise. Nous ne voulons pas de se connecter sur le référentiel central Maven, et nous avons une structure de répertoire différent pour le code src et le test que spécifié dans le super pom. Je me suis dit la meilleure façon de gérer cela est de créer un client super pom, mais je me demande - où dois-je mettre effectivement les super pom poms donc mon projet peut référencer? Est-il aller dans le dépôt quelque part? Si oui, où?

Merci, Jeff

Était-ce utile?

La solution

Ma suggestion est que vous créez un POM parent à partir duquel vos projets peuvent tirer vos paramètres. Ce POM parent est tout simplement un autre projet Maven 2, mais avec le type « pom » au lieu de « pot ».

Par exemple, vous pourriez avoir une pom-mère comme ceci:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company.projectname</groupId>
    <artifactId>projectname</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <name>projectname</name>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.5</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <superprop1>this property is available in all child projects</superprop1>
        <superprop2>this property is available in all child projects</superprop2>
        <superprop3>this property is available in all child projects</superprop3>
    </properties>
</project>

Et un enfant du projet pourrait ressembler à ceci:

<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>projectname</artifactId>
        <groupId>com.company.projectname</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>        
    <artifactId>child-project</artifactId>
    <packaging>jar</packaging>
    <name>child-project</name>
    <description>
        My child project
    </description>
</project>

Tout ce que vous déclarez dans le POM parent est maintenant disponible chez l'enfant pom. Dans l'exemple à propos, le projet enfant aura automatiquement la dépendance JUnit disponible. Faire de cette façon aussi faire en sorte que l'environnement est automatiquement compris par rapport à si chaque développeur aurait de bricoler avec le super POM de leur installation Maven.

Autres conseils

Vous avez probablement raison, un super-pom est la voie à suivre dans cette situation. Quant à savoir où vous mettez, vous devrez créer un repository local et donner accès aux développeurs à lui. Voici quelques programmes utiles (et gratuit):

Une fois que vous obtenez un dépôt jusqu'à une course, vous aurez besoin d'avoir modifier chaque développeur leur settings.xml pour référencer le nouveau serveur de référentiel que vous avez configuré. Le super pom que vous créez sera déployé dans le référentiel, donc une fois qu'ils sont configurés pour l'utiliser, alors Maven va tirer le super pom automatiquement.

Voici un exemple d'un Artifactory fichier généré settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>all</name>
          <url>https://server.mycompany.com/artifactory/all</url>
        </repository>
        <repository>
          <snapshots />
          <id>snapshots</id>
          <name>all</name>
          <url>https://server.mycompany.com/artifactory/all</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>all</name>
          <url>https://server.mycompany.com/artifactory/all</url>
        </pluginRepository>
        <pluginRepository>
          <snapshots />
          <id>snapshots</id>
          <name>all</name>
          <url>https://server.mycompany.com/artifactory/all</url>
        </pluginRepository>
      </pluginRepositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top