2015-03-04 10 views
5

Ben gördüm: Avoid gpg signing prompt when using Maven release plugin ama maven çok eski bir sürümü için ve ben 3.2.2 kullanıyorum, bu yüzden aynı çözüm geçerli değildir.Ortam değişkeni veya komut satırı özelliğinden bir parola kullanmak için maven-gpg-plugin'i nasıl edinebilirim?

Temel olarak, komut satırındaki özelliklerin kombinasyonu, pom.xml'deki özellikler veya ortam değişkenleri ne olursa olsun, aracı iletişim kutusunu açmaktan kaçınmak için maven gpg eklentisini alamıyorum.

Güvenlik nedenleriyle parolaları düz metinde settings.xml dosyasına dahil etmemeye karar verdik çünkü bu çok kötü bir fikir. Ve şifreli maven malzemelerini kullanarak ana anahtarı sadece farklı bir düz metin dosyasına taşır.

Yazılım sürümleri: Ben pom.xml'Bu özelliklerini kullanma

mvn -Dgpg.passphrase='lolpassphrase' 

denedi

$ gpg --version 
gpg (GnuPG) 2.1.2 
libgcrypt 1.6.2 

$ mvn --version 
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T08:51:42-05:00) 

ortamdan almak için: Sonra

 <properties> 
      <gpg.keyname>E7C89BBB</gpg.keyname> 
      <gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase> 
     </properties> 

ve:

GPG_PASSPHRASE='lolpassphrase' mvn install 

DÜZENLEME: Anlaşılan benim gpg ajan Ben Orada pom.xml özelliklerinde gerçek parolayı :(

 <properties> 
      <gpg.keyname>E7C89BBB</gpg.keyname> 
      <gpg.passphrase><![CDATA[lolcomplicatedpassphrase]]></gpg.passphrase> 
     </properties> 

ayarlarsanız GPG ajanı beni hala isteyecektir olacak şekilde alma ve bana yalan söylediğini şifreyi bir yerde düz metin olarak tutmadan bunu yapmanın bir yolu olmalı, ancak bu cevabı bulmak için doğru googları kullanamayacağım.

cevap

5

DÜZENLEME: bu çözüm yalnızca gnupg 2.1.x üzerinde çalışır. 2.0.x --pinentry modu komut satırı parametresini tanımıyor ve patlar. Maalesef, mavilerde, ikinci bir profilin yanı sıra, hangi gnupg sürümü için doğru şeyi yapabildiğimi bilmeme imkan yok. Muhtemelen "doğru" şekilde yapmak için eklentiye bir güncelleme ihtiyacı olacaktır. o Bunu yaptıktan sonra, gpg.passphrase değerini onur 'loopback' için pinentry modu bulunuyor değiştirmek gpg için

Heey, sadece bu anladım, sen ya argümanlar bir çift belirtmelisiniz bir ortam değişkeninden veya bir kullanıcı özelliğinden. Vay, bu karanlıktı.

   <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-gpg-plugin</artifactId> 
        <version>1.6</version> 
        <executions> 
         <execution> 
          <id>sign-artifacts</id> 
          <phase>verify</phase> 
          <goals> 
           <goal>sign</goal> 
          </goals> 
          <configuration> 
           <!-- This is necessary for gpg to not try to use the pinentry programs --> 
           <gpgArguments> 
            <arg>--pinentry-mode</arg> 
            <arg>loopback</arg> 
           </gpgArguments> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin>