2017-12-01 2 views
0

に特殊文字:jarsignerのプラグインとストアパス

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jarsigner-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <id>sign</id> 
      <goals> 
       <goal>sign</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <keystore>key/mystore.jks</keystore> 
     <alias>myalias</alias> 
     <storepass>aBc.d:efg,H#ij^k?L</storepass> 
    </configuration> 
</plugin> 

問題は、ストアパスに特殊文字であるように見えます。私はWindows上だときは、上記のようにストアパスを提供することは、次のエラーが発生します。

Failed executing 'cmd.exe /X /C "D:\SOFT\JDK8\jre\..\bin\jarsigner.exe ... 

私は基本的な場面では、jarsignerコマンドを実行すると:

jarsigner.exe -keystore D:\path\to\mystore.jks -storepass aBc.d:efg,H#ij^k?L D:\path\to\project\target\webstarts.jar myalias

を私は同様のエラーを取得しますが、ときに私はストアパスをラップ引用符で、それは動作します。だから私は戻って私のpom.xmlに行き、引用符でそこストアパスを置く:

<storepass>"aBc.d:efg,H#ij^k?L"</storepass> 

そしてそれは働きました。残念ながら、Linuxのビルドサーバーで同じビルドを実行すると、引用符は機能しません。引用符なしでのみ動作します。だから私は完全にポンポンのうちリテラルストアパスを取ると、

<storepass>${jks.storepass}</storepass> 

ような何かをしようとしたし、その後

mvn clean package -Djks.storepass=aBc.d:efg,H#ij^k?L

それはで動作するか、Windows上で引用符なしませんでした。

私は、特別な文字でstorepassをサポートするソリューションを探しており、同じpomを持つWindowsとLinuxの両方で動作します。特別なキャラクター( "changeme"のような)がなくても、すべてがうまくいっていて、引用符を必要としませんでした。

答えて

0

profile and activation per OSを利用すると、Windowsでは引用符を使用でき、Linuxでは引用符を使用できません。例:

<profiles> 
    <profile> 
     <activation> 
      <os> 
       <family>windows</family> 
      </os> 
     </activation> 
     <properties> 
      <jks.storepass>"my?^#pass"</jks.storepass> 
     </properties> 
    </profile> 
    <profile> 
     <activation> 
      <os> 
       <family>unix</family> 
      </os> 
     </activation> 
     <properties> 
      <jks.storepass>my?^#pass</jks.storepass> 
     </properties> 
    </profile> 
</profiles> 

... 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jarsigner-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <id>sign</id> 
      <goals> 
       <goal>sign</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <keystore>key/mystore.jks</keystore> 
     <alias>myalias</alias> 
     <storepass>${jks.storepass}</storepass> 
    </configuration> 
</plugin> 

他のOSファミリでビルドを実行する場合は、それぞれのプロファイルを指定することができます。利用可能な​​

関連する問題