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 }