2009-10-19 6 views
3

Je reconfigure un serveur de build que quelqu'un d'autre a installé depuis longtemps pour utiliser un nouveau référentiel Maven. Cependant, l'ancien référentiel est toujours référencé et je ne peux pas savoir d'où provient cette référence.Emplacement du référentiel Maven malheurs

M2_HOME =/usr/share/maven2

/etc/maven2/m2.conf (usr/partager des liens/maven2/conf/de m2.conf ici)

main is org.apache.maven.cli.MavenCli from plexus.core 

set maven.home default ${user.home}/m2 

[plexus.core] 
load ${maven.home}/lib/*.jar 

/etc/maven2/conf a aussi un settings.xml avec toutes les entrées commentées.

L'utilisateur de construction a une ~/.m2/settings.xml: référencementNewRepo.

<settings> 
    <pluginGroups> 
    </pluginGroups> 
    <servers> 
    </servers> 
    <profiles> 
     <profile> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <id>personal</id> 
      <repositories> 
       <repository> 
        <id>new-repo</id> 
        <name>New Maven 2 Repo</name> 
        <url>http://NewRepo/</url> 
       </repository> 
     <!-- Some other standard repos like maven.org here --> 
      </repositories> 
      <pluginRepositories> 
       <pluginRepository> 
        <id>ibiblio</id> 
        <name>Ibiblio Maven 2 Repo</name> 
        <url>http://repo1.maven.org/maven2/</url> 
       </pluginRepository> 
       <pluginRepository> 
        <id>apache-snapshots</id> 
        <name>Apache Snapshots Maven 2 Repo</name> 
        <url>http://people.apache.org./maven-snapshot-repository/</url> 
       </pluginRepository> 
      </pluginRepositories> 
     </profile> 
    </profiles> 
</settings> 

Il y a aussi un /mnt/public/maven/settings.xml avec le même contenu que le settings.xml de l'utilisateur de construire

Je cherchai l'ensemble du système de fichiers pour assurer qu'il n'y a pas d'autres paramètres Fichiers .xml.

Lors de l'exécution

mvn release:prepare 

Je reçois l'avertissement:

[INFO] NOTE: Maven is executing in offline mode. Any artifacts not already in your local repository will be inaccessible.

Lors de l'exécution

mvn release:perform 

Je reçois l'erreur:

Error deploying artifact: Failed to transfer file: http://OldRepo

Où pourrait se cacher cette référence à http: // OldRepo?

EDIT

pom.xml Le projet de référence à un POM parent comme suit:

<parent> 
    <groupId>MyParent</groupId> 
    <artifactId>maven</artifactId> 
    <version>20090727</version> 
</parent> 

Il n'y a aucune référence à

<distributionManagement> 

en POM du projet. J'ai été incapable de localiser le parent POM.

+0

L'autorisation release: prepare n'affectera pas votre déploiement. –

+0

Le pom parent doit être dans votre référentiel local (suivre l'ID groupe) –

Répondre

8

A propos repositories dans un profile déclaré dans le settings.xml, la documentation dit:

Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.

Donc, ce n'est pas utilisé pour la gestion des versions. Pour configurer l'emplacement d'un artefact, vous devez ajouter un élément distributionManagement dans votre pom.

Voici un exemple de configuration d'un élément distributionManagement dans un fichier pom.xml de projet.

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Application</name> 
    <url>http://app.mycompany.com</url> 
    ... 
    <distributionManagement> 
    <repository> 
     <id>myRepoId</id> 
     <name>myCompanyReporsitory</name> 
     <url>ftp://repository.mycompany.com/repository</url> 
    </repository> 
    </distributionManagement> 
    ... 
</project> 

Rechercher cet élément dans votre pom pom ou dans un parent (il pourrait être déclaré dans une pom-mère d'entreprise).

EDIT: vous pouvez remplacer les distributionManagement dans votre pom, mais il serait préférable de le modifier dans la pom-mère et libérer cette nouvelle version dans votre référentiel d'entreprise si ce changement est définitif.

+0

Il n'y a aucun noeud distributionManagement dans le POM du projet. Il y a une référence à un parent POM (ajouté à ma question) mais il n'y a pas de chemin spécifié au parent, et il n'y a aucun autre projet dans le répertoire de construction. Cherché le système de fichiers pour tout pom.xml pour essayer de localiser le parent POM mais pas de chance. –

+0

Vous pouvez déclarer un parent en utilisant ses attributs 'groupId',' artefactId' et 'version', sans le paramètre 'relativePath', si ce parent a été publié dans votre référentiel d'entreprise. C'est en fait comment un pom "corporate" devrait être utilisé (ce qui semble être le cas ici). Le pom parent doit avoir été téléchargé dans votre dépôt local. –

+0

Ah, ça l'a fait. Le parent POM est dans le référentiel. –

0

Peut-être est-il stupide de suggérer mais avez-vous essayé avec votre vieil ami grep, si elle est disponible?

+0

Première chose que j'ai essayé :-) J'ai essayé de grep tous les fichiers ordinaires de moins de 5K pour le texte correspondant (après avoir essayé pom.xml et * .xml). J'ai un grep en train de vérifier tous les fichiers. Celui-ci a fonctionné pendant un moment maintenant. –

+0

bonne chance alors :) – pedromarce

Questions connexes