2013-07-03 16 views
6

Sto tentando di eseguire mvn release:perform, ma il comando presuppone che il file pom sia nella radice del repository. Esiste una proprietà o preferenza di sistema che posso impostare per sovrascrivere il valore predefinito?release mvn: esecuzione fallita perché il file pom non è nella root del repository

La chiamata a mvn release:prepare sembra aver avuto successo, come tutti i manufatti di rilascio sono seduti nella directory di destinazione e il repository è codificato correttamente.

Se è importante, questo è un progetto git.


EDIT Ecco quello che ho fatto:

cd /path/to/git/root/path/to/mvn/project 
mvn -DdevelopmentVersion=1.2.0-SNAPSHOT -DreleaseVersion=1.1.0 release:prepare 
...enter correct passphrase and choose all default options... 
mvn release:perform 

E poi clonare il repository remoto nella directory target/checkout e dopo qualche sfornare e spingendo per il repo git remoto, il seguente errore accade:

[ERROR] 
[ERROR] The project (/path/to/git/root/path/to/mvn/project/target/checkout/pom.xml) has 1 error 
[ERROR]  Non-readable POM /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml: /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml (No such file or directory) 

Quindi, Maven è alla ricerca per il file pom nella radice della directory target/checkout, che non è dove si trova.

+3

n Maven assume il pom si trova nella directory di lavoro corrente e la radice del progetto. Non presuppone che il pom sia alla radice del repository. Un layout comune (in Subversion) è /trunk/ProjectName/pom.xml. rilascio: preparare lavori lì. Puoi approfondire il problema che stai ottenendo con il rilascio? –

+0

Vedere la mia modifica sopra. –

+0

Solo curioso, dove * è * il pom.xml si trova, e si trova automaticamente per tutte le altre attività, ad esempio "mvn install", "mvn compile"? In genere puoi usare "mvn -f dir1/dir2/pom.xml" per usare un pom.xml alternativo, sebbene non l'abbia mai provato con il plugin di rilascio. – Keith

risposta

0

Dal momento che il root root non è effettivamente nel controllo del codice sorgente, penso che il rilascio: preparare e rilasciare: eseguire non funzionerà per voi. Penso che uno degli obiettivi di questi comandi sia quello di garantire che il progetto rilasciato possa essere costruito (e superato i test) in base a ciò che è il controllo del codice sorgente, non a ciò che è sulla macchina di una persona. Questo è il motivo per cui tenta di eseguire il checkout e ricostruire. Se il pom non è semplicemente nel controllo della fonte, allora questo obiettivo non è possibile. Potrebbe essere necessario eseguire manualmente i passaggi rilasciati: preparare e rilasciare: eseguire fare: rimuovere snapshot, commit, tag, mvn deploy, incrementare la versione aggiungendo snapshot, commit.

+2

Penso che abbiate frainteso il mio commento sopra. Il pom è sotto il controllo della sorgente. Non è solo nella radice del controllo del codice sorgente. –

+0

@Andrew, Git non ha alcun concetto di "sottodirectory" quando si tratta di commit, quindi il tuo scenario non è utilizzabile in termini di Git + maven-release-plugin. Il plugin deve eseguire il commit/tag dell'intero progetto (Git) e non può farlo. Il progetto complessivo KISS deve avere 1: 1 Git-project: build-artefatto. Detto questo, i sottomoduli di Maven funzioneranno ma devi eseguire maven-release-plugin sul genitore e su tutti i suoi sotto-moduli. – Andre

7

Ho avuto lo stesso problema. Aggiungi questo al vostro pom:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    <executions> 
    <execution> 
     <id>default</id> 
     <goals> 
      <goal>perform</goal> 
     </goals> 
     <configuration> 
      <pomFileName>subdir/pom.xml</pomFileName> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Fonte: https://stackoverflow.com/a/8233712/555220

+0

Grazie. Sembra promettente. Come ho detto, non uso più il plugin di rilascio. Invece usando l'obiettivo di deploy. Ci proverò, però, e vedrò se funziona. –

Problemi correlati