View Javadoc

1   package org.apache.maven.plugins.mavenone;
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  import java.util.Iterator;
24  import java.util.List;
25  
26  import org.apache.maven.artifact.Artifact;
27  import org.apache.maven.artifact.deployer.ArtifactDeployer;
28  import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
29  import org.apache.maven.artifact.repository.ArtifactRepository;
30  import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
31  import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
32  import org.apache.maven.plugin.AbstractMojo;
33  import org.apache.maven.plugin.MojoExecutionException;
34  
35  /**
36   * Deploy the artifact in a Maven 1 remote repository.
37   *
38   * @goal deploy-maven-one-repository
39   * @phase deploy
40   */
41  public class MavenOneRepositoryDeployMojo
42      extends AbstractMojo
43  {
44      /**
45       * @parameter expression="${project.packaging}"
46       * @required
47       * @readonly
48       */
49      protected String packaging;
50  
51      /**
52       * @parameter expression="${project.file}"
53       * @required
54       * @readonly
55       */
56      private File pomFile;
57  
58      /**
59       * @parameter expression="${project.artifact}"
60       * @required
61       * @readonly
62       */
63      private Artifact artifact;
64  
65      /**
66       * @component
67       * @todo Write Javadoc for this
68       */
69      protected ArtifactDeployer deployer;
70  
71      /**
72       * @component
73       * @todo Write Javadoc for this
74       */
75      protected ArtifactRepositoryFactory factory;
76  
77      /**
78       * The id to use in <code>settings.xml</code> if you want to configure server settings there.
79       *
80       * @parameter expression="${remoteRepositoryId}" default-value="mavenOneRemoteRepository"
81       * @required
82       */
83      protected String remoteRepositoryId;
84  
85      /**
86       * The URL to the remote repository.
87       *
88       * @parameter expression="${remoteRepositoryUrl}"
89       * @required
90       */
91      protected String remoteRepositoryUrl;
92  
93      /**
94       * Whether the remote repository uses a legacy layout or not.
95       *
96       * @component roleHint="legacy"
97       */
98      private ArtifactRepositoryLayout legacyLayout;
99  
100     /**
101      * @parameter expression="${localRepository}"
102      * @required
103      * @readonly
104      */
105     private ArtifactRepository localRepository;
106 
107     /**
108      * @parameter expression="${project.attachedArtifacts}
109      * @required
110      * @readonly
111      */
112     private List attachedArtifacts;
113 
114     public void execute()
115         throws MojoExecutionException
116     {
117         try
118         {
119             ArtifactRepository deploymentRepository = factory.createDeploymentArtifactRepository( remoteRepositoryId,
120                                                                                                   remoteRepositoryUrl,
121                                                                                                   legacyLayout, false );
122 
123             boolean isPomArtifact = "pom".equals( packaging );
124 
125             if ( isPomArtifact )
126             {
127                 deployer.deploy( pomFile, artifact, deploymentRepository, localRepository );
128             }
129             else
130             {
131                 File file = artifact.getFile();
132                 if ( file == null )
133                 {
134                     throw new MojoExecutionException(
135                         "The packaging for this project did not assign a file to the build artifact" );
136                 }
137                 deployer.deploy( file, artifact, deploymentRepository, localRepository );
138             }
139 
140             if ( attachedArtifacts != null && !attachedArtifacts.isEmpty() )
141             {
142                 for ( Iterator i = attachedArtifacts.iterator(); i.hasNext(); )
143                 {
144                     Artifact attached = (Artifact) i.next();
145 
146                     deployer.deploy( attached.getFile(), attached, deploymentRepository, localRepository );
147                 }
148             }            
149         }
150         catch ( ArtifactDeploymentException e )
151         {
152             throw new MojoExecutionException( e.getMessage(), e );
153         }
154     }
155 }