View Javadoc

1   package org.apache.maven.plugins.jarsigner;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.File;
23  
24  import org.codehaus.plexus.util.StringUtils;
25  import org.codehaus.plexus.util.cli.Commandline;
26  
27  /**
28   * Signs a project artifact and attachments using jarsigner.
29   *
30   * @author <a href="cs@schulte.it">Christian Schulte</a>
31   * @version $Id: JarsignerSignMojo.java 795388 2009-07-18 15:43:59Z bentmann $
32   * @goal sign
33   * @phase package
34   */
35  public class JarsignerSignMojo
36      extends AbstractJarsignerMojo
37  {
38  
39      /**
40       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
41       *
42       * @parameter expression="${jarsigner.keystore}"
43       */
44      private String keystore;
45  
46      /**
47       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
48       *
49       * @parameter expression="${jarsigner.storepass}"
50       */
51      private String storepass;
52  
53      /**
54       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
55       *
56       * @parameter expression="${jarsigner.keypass}"
57       */
58      private String keypass;
59  
60      /**
61       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
62       *
63       * @parameter expression="${jarsigner.sigfile}"
64       */
65      private String sigfile;
66  
67      /**
68       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
69       *
70       * @parameter expression="${jarsigner.storetype}"
71       */
72      private String storetype;
73  
74      /**
75       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
76       * 
77       * @parameter expression="${jarsigner.providerName}"
78       */
79      private String providerName;
80  
81      /**
82       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
83       * 
84       * @parameter expression="${jarsigner.providerClass}"
85       */
86      private String providerClass;
87  
88      /**
89       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
90       * 
91       * @parameter expression="${jarsigner.providerArg}"
92       */
93      private String providerArg;
94  
95      /**
96       * See <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/jarsigner.html#Options">options</a>.
97       *
98       * @parameter expression="${jarsigner.alias}"
99       * @required
100      */
101     private String alias;
102 
103     protected Commandline getCommandline( final File archive, final Commandline commandLine )
104     {
105         if ( archive == null )
106         {
107             throw new NullPointerException( "archive" );
108         }
109         if ( commandLine == null )
110         {
111             throw new NullPointerException( "commandLine" );
112         }
113 
114         if ( !StringUtils.isEmpty( this.keystore ) )
115         {
116             commandLine.createArg().setValue( "-keystore" );
117             commandLine.createArg().setValue( this.keystore );
118         }
119         if ( !StringUtils.isEmpty( this.storepass ) )
120         {
121             commandLine.createArg().setValue( "-storepass" );
122             commandLine.createArg().setValue( this.storepass );
123         }
124         if ( !StringUtils.isEmpty( this.keypass ) )
125         {
126             commandLine.createArg().setValue( "-keypass" );
127             commandLine.createArg().setValue( this.keypass );
128         }
129         if ( !StringUtils.isEmpty( this.storetype ) )
130         {
131             commandLine.createArg().setValue( "-storetype" );
132             commandLine.createArg().setValue( this.storetype );
133         }
134         if ( !StringUtils.isEmpty( this.providerName ) )
135         {
136             commandLine.createArg().setValue( "-providerName" );
137             commandLine.createArg().setValue( this.providerName );
138         }
139         if ( !StringUtils.isEmpty( this.providerClass ) )
140         {
141             commandLine.createArg().setValue( "-providerClass" );
142             commandLine.createArg().setValue( this.providerClass );
143         }
144         if ( !StringUtils.isEmpty( this.providerArg ) )
145         {
146             commandLine.createArg().setValue( "-providerArg" );
147             commandLine.createArg().setValue( this.providerArg );
148         }
149         if ( !StringUtils.isEmpty( this.sigfile ) )
150         {
151             commandLine.createArg().setValue( "-sigfile" );
152             commandLine.createArg().setValue( this.sigfile );
153         }
154 
155         commandLine.createArg().setFile( archive );
156 
157         if ( !StringUtils.isEmpty( this.alias ) )
158         {
159             commandLine.createArg().setValue( this.alias );
160         }
161 
162         return commandLine;
163     }
164 
165     protected String getCommandlineInfo( final Commandline commandLine )
166     {
167         String commandLineInfo = commandLine != null ? commandLine.toString() : null;
168 
169         if ( commandLineInfo != null )
170         {
171             commandLineInfo = StringUtils.replace( commandLineInfo, this.keypass, "'*****'" );
172             commandLineInfo = StringUtils.replace( commandLineInfo, this.storepass, "'*****'" );
173         }
174 
175         return commandLineInfo;
176     }
177 
178 }