2013-04-14 13 views
11

Próbuję wydać bibliotekę przy użyciu Mavena i wykonać instalację strony na sourceforge (najpierw utworzyłem interaktywną powłokę). Wydanie odbywa się przez pracę Jenkinsa (przy użyciu wtyczki Maven Release dla Jenkins).Przekazywanie argumentów do wydania Maven

Próbowałem:

-X -e -Dresume=false -Dusername=puce release:prepare release:perform -Darguments="-Dusername=puce" 

i

-X -e -Dresume=false -Dusername=puce -Darguments=-Dusername=puce release:prepare release:perform 

ale oba czasy praca wisi na stronie: wdrożenie pierwszego modułu:

[INFO] --- maven-site-plugin:3.2:deploy (default-deploy) @ myproject-parent --- 
[INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0 
[INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0 
Using private key: /opt/jenkins/.ssh/id_dsa 

Kiedy przerwać pracę, na końcu drukowane są następujące elementy:

Password for ${username}@shell.sourceforge.net: channel stopped 

co prawdopodobnie oznacza, że ​​$ {username} nie zostało rozwiązane.

Jak mogę rozwiązać problem $ {nazwa użytkownika}?

Edit:

pamiętać, że poniższe działa poprawnie:

site-deploy -Psonatype-oss-release -Dusername=puce 

Edit 2: W ramach wydania: wykonywanie Maven wykonuje następujące polecenie:

/usr/share/maven/bin/mvn -s /tmp/release-settings7797889802430474959.xml deploy site-deploy --no-plugin-updates --batch-mode -Psonatype-oss-release -P nexus -f pom.xml 

-Dusername=puce nie wydaje się być przekazywane do tego mave Komenda n ...

pamiętać również, że pomoc: efektywne-pom przedstawia następującą konfigurację Maven-release-plugin:

<plugin> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.2</version> 
    <configuration> 
    <mavenExecutorId>forked-path</mavenExecutorId> 
    <useReleaseProfile>false</useReleaseProfile> 
    <arguments>-Psonatype-oss-release</arguments> 
    </configuration> 
</plugin> 

„argumentów”, więc zostaje określony i jej wartość zdaje się dotrzeć polecenia wbudowanego maven zamiast wartości przekazywane w linii poleceń ...

+0

Czy próbowałeś już ustawić swoją nazwę użytkownika w pliku settings.xml? http://maven.apache.org/settings.html#Servers – noahlz

Odpowiedz

7

Zastępowanie

<plugin> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.2</version> 
    <configuration> 
    <mavenExecutorId>forked-path</mavenExecutorId> 
    <useReleaseProfile>false</useReleaseProfile> 
    <arguments>-Psonatype-oss-release</arguments> 
    </configuration> 
</plugin> 

z

<plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <configuration> 
      <mavenExecutorId>forked-path</mavenExecutorId> 
      <useReleaseProfile>false</useReleaseProfile> 
      <arguments>-Psonatype-oss-release -Dusername=${username}</arguments> 
     </configuration> 
    </plugin> 

w jednym z rodziców wystarczyły.

Wygląda na to, że błąd w wierszu poleceń nie zastępuje wartości w POM.

16

Co mam zrobić z powodzeniem w przeszłości, jest następująca:

  • Definiowanie właściwości w fil POM e, np .:

    <properties> 
        <release.arguments></release.arguments> 
    </properties> 
    
  • Dodaj właściwość POM do konfiguracji wtyczki w pliku POM, np .;

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-release-plugin</artifactId> 
        <configuration> 
         <arguments>${release.arguments}</arguments> 
         ... 
    
  • Przepuścić argument za pośrednictwem właściwości w linii poleceń, np .:

    mvn release:prepare -Drelease.arguments="-N -Prelease" 
    

nadzieję, że to pomaga.

+0

Czy istnieje sposób zdefiniowania wartości domyślnej, jeśli nie zostanie przekazany z wiersza poleceń? – JamesC

+0

Tak, w ramach pierwszego pocisku z moją odpowiedź można wprowadzić domyślne, takie jak: ' Twoje domyślne kliknij tutaj ' –

+0

Podobne pytanie pisałem tutaj: http: //stackoverflow.com/questions/29088735/why-cant-my-tests-see-my-system-property-when-i-release-on-jenkins Twoje rozwiązanie działa. –

Powiązane problemy