View Javadoc

1   package org.apache.maven.artifact.ant;
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 org.apache.maven.artifact.Artifact;
23  import org.apache.maven.artifact.installer.ArtifactInstallationException;
24  import org.apache.maven.artifact.installer.ArtifactInstaller;
25  import org.apache.maven.artifact.metadata.ArtifactMetadata;
26  import org.apache.maven.artifact.repository.ArtifactRepository;
27  import org.apache.maven.project.artifact.ProjectArtifactMetadata;
28  import org.apache.tools.ant.BuildException;
29  
30  import java.util.Iterator;
31  
32  /**
33   * Install task, using maven-artifact.
34   *
35   * @author <a href="mailto:brett@apache.org">Brett Porter</a>
36   * @version $Id: InstallTask.java 688561 2008-08-24 21:01:41Z hboutemy $
37   * @todo should be able to incorporate into the install mojo?
38   */
39  public class InstallTask
40      extends InstallDeployTaskSupport
41  {
42      protected void doExecute()
43      {
44          ArtifactRepository localRepo = createLocalArtifactRepository();
45  
46          Pom pom = buildPom( localRepo );
47  
48          if ( pom == null )
49          {
50              throw new BuildException( "A POM element is required to install to the local repository" );
51          }
52          
53          Artifact artifact = pom.getArtifact();
54  
55          boolean isPomArtifact = "pom".equals( pom.getPackaging() );
56          if ( !isPomArtifact )
57          {
58              ArtifactMetadata metadata = new ProjectArtifactMetadata( artifact, pom.getFile() );
59              artifact.addMetadata( metadata );
60          }
61  
62          ArtifactInstaller installer = (ArtifactInstaller) lookup( ArtifactInstaller.ROLE );
63          try
64          {
65              if ( !isPomArtifact )
66              {
67                  if ( file == null )
68                  {
69                      throw new BuildException( "You must specify a file to install to the local repository." );
70                  }
71  
72                  installer.install( file, artifact, localRepo );
73              }
74              else
75              {
76                  installer.install( pom.getFile(), artifact, localRepo );
77              }
78  
79              // Install any attached artifacts
80              if ( attachedArtifacts != null )
81              {
82                  Iterator iter = pom.getAttachedArtifacts().iterator();
83  
84                  while ( iter.hasNext() )
85                  {
86                      Artifact attachedArtifact = (Artifact) iter.next();
87                      installer.install( attachedArtifact.getFile(), attachedArtifact, localRepo );
88                  }
89              }
90          }
91          catch ( ArtifactInstallationException e )
92          {
93              throw new BuildException(
94                  "Error installing artifact '" + artifact.getDependencyConflictId() + "': " + e.getMessage(), e );
95          }
96      }
97  }