2012-01-24 14 views
5

Sto tentando di fare una versione tramite il plugin di rilascio di Maven e sto avendo problemi con la configurazione di SCM. Sto usando Eclipse con m2eclipse installato. Usiamo Mercurial e sulla mia macchina (Win7) ho installato TortoiseHg. Ho un progetto di test che crea un barattolo. Facciamo uso di un super pom per i nostri progetti, così fa anche il progetto di test pom. Ho creato questo super pom:Doing Releases con Maven/Hudson/Mercurial

<build> 
    <plugins> 
     .... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin 
      <version>1.6</version> 
      <configuration> 
       <connectionType>connection</connectionType> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Il mio test progetto pom assomiglia a questo:

<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>my.group</groupId> 
    <artifactId>TestJar 
    <version>1.0-SNAPSHOT</version> 
    <parent>  
     <groupId>my.group</groupId> 
     <artifactId>super-pom</artifactId> 
     <version>1.0</version> 
    </parent> 
    <scm> 
     <connection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </connection> 
     <developerConnection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </developerConnection> 
    </scm> 
</project> 

Si noti che SSH al nostro server SCM. Sospetto che alcuni dei problemi che sto incontrando siano correlati a questo. Sono stato solo in grado di trovare esempi che usano http.

Nel mio file settings.xml, ho aggiunto questo:

<servers> 
    ... 
    <server> 
     <id>our.scm.server</id> 
     <username>username</username> 
     <password>password</password> 
    </server> 
</servers> 

Quando eseguo rilascio: preparare rilascio: eseguire, una finestra si apre TortoisePlink mi ha chiesto di inserire una password. La finestra di dialogo chiede la "password di @ our.scm.server".

Sembra che non stia utilizzando il nome utente o la password dal file settings.xml che è quello che mi aspettavo aggiungendo l'elemento server ad esso. Dovrebbe essere? Ho anche provato ad aggiungere il mio nome utente per l'url di connessione:

<connection> 
    scm:hg:ssh://[email protected]:22//path/to/TestJarProject 
</connection> 

ma sto ancora viene richiesta la password di un nome utente vuoto.

dubbio uno

Qualcuno ha utilizzato con successo ssh per connettersi a Mercurial mentre si fa Maven release?

Dal momento che in ultima analisi, voglio fare le generazioni a Hudson, ho creato un lavoro Hudson per fare il rilascio, ma non riesce con questo errore:

[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s) 
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\ 
    LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\ 
    maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \ 
    prepare the release because you have local modifications : 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown] 
... many, many more lines of this nature ..... 

DOMANDA DUE

quali modifiche locali è l'incontro di Maven?

Poiché il progetto viene estratto dal repository, l'unica modifica che posso pensare è l'aggiornamento del file pom (rimozione di SNAPSHOT dalla versione). Ma Maven non dovrebbe lamentarsi di questo da quando ha fatto il cambiamento stesso, no?

UPDATE

Come da suggerimento di khmarbaise, ho aggiunto questo al mio POM genitore:

<pluginManagement> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.2.2</version> 
     </plugin> 
    </plugins> 
</pluginManagement> 
+0

Prima fai una sezione di gestione dei plugin nel tuo genitore e configura una versione più recente del plugin di maven-release perché stai usando 2.0 che è un po 'obsoleto ... Quale versione di Maven usi? Hudson è aggiornato? Usando il plugin di rilascio di Hudson? – khmarbaise

+0

Stiamo usando Hudson 2.1.2 e Maven 3 (in bundle con Hudson) – sdoca

+0

Avete prima controllato se è possibile fare un rilascio su linea di comando senza Hudson? (aggiunta la sezione pluginManagement?) – khmarbaise

risposta

2

dubbio uno

Qualcuno ha utilizzato con successo ssh per connettersi a Mercurial mentre fa le uscite di Maven?

La risposta sembra essere che il Maven Release Plugin funziona solo con https.Siamo stati in grado di ottenere https lavorare sul nostro server Mercurial dai generalmente seguendo le istruzioni in questa pagina:

https://www.mercurial-scm.org/wiki/HgWebDirStepByStep

DOMANDA DUE

Quali modifiche locale sta incontrando Maven?

Le modifiche locali sono la directory .maven creata durante la generazione. Aggiungendo .maven/* al mio file .hgignore, sono stato in grado di completare la compilazione.

0

non sono in grado di riprodurre questo momento, ma per esperienza precedente mi ricordo che le connessioni ssh solo lavoro con chiave a base di autenticazione, non con nomi utente e password. Questo non è necessariamente specifico per il plugin di rilascio e/o il suo supporto Mercurial.

EDIT: Ho provato l'accesso ssh basato su chiave con Mercurial e il plugin di rilascio versione 2.4.1 oggi, e funziona bene. Una possibile fonte di problemi è il formato URL SCM. Nel mio caso si tratta di:

scm:hg:ssh://[email protected]/path 

Quindi la risposta alla tua domanda è una: sì, ma non con l'autenticazione nome utente/password. Non ho riscontrato alcun problema di "modifica locale", ma ho un obiettivo nel mio .hgignore in modo che possa essere quello.

Problemi correlati