1 package org
.argeo
.slc
.maven
;
5 import java
.util
.Vector
;
7 import org
.apache
.commons
.logging
.Log
;
8 import org
.apache
.commons
.logging
.LogFactory
;
9 import org
.apache
.maven
.artifact
.Artifact
;
10 import org
.apache
.maven
.artifact
.repository
.ArtifactRepository
;
11 import org
.apache
.maven
.embedder
.MavenEmbedder
;
12 import org
.apache
.maven
.embedder
.MavenEmbedderException
;
14 import org
.argeo
.slc
.core
.SlcException
;
16 public class MavenManager
{
17 private final Log log
= LogFactory
.getLog(getClass());
19 private String repositoryId
;
20 private String repositoryUrl
;
21 private String localRepositoryPath
;
23 private ArtifactRepository localRepository
;
24 private List
<ArtifactRepository
> remoteRepositories
;
26 private MavenEmbedder mavenEmbedder
;
30 mavenEmbedder
= new MavenEmbedder();
31 mavenEmbedder
.setOffline(true);
32 mavenEmbedder
.setClassLoader(Thread
.currentThread()
33 .getContextClassLoader());
34 mavenEmbedder
.start();
36 mavenEmbedder
.setLocalRepositoryDirectory(new File(
37 localRepositoryPath
));
39 localRepository
= mavenEmbedder
.getLocalRepository();
41 // localRepository = mavenEmbedder.createLocalRepository(new File(
42 // localRepositoryPath));
44 ArtifactRepository repository
= mavenEmbedder
.createRepository(
45 repositoryUrl
, repositoryId
);
47 remoteRepositories
= new Vector
<ArtifactRepository
>();
48 remoteRepositories
.add(repository
);
49 } catch (Exception e
) {
50 throw new SlcException("Cannot initialize Maven manager", e
);
54 private Artifact
resolve(MavenFile mavenDistribution
) {
57 if (mavenDistribution
.getClassifier() == null) {
58 artifact
= mavenEmbedder
.createArtifact(mavenDistribution
59 .getGroupId(), mavenDistribution
.getArtifactId(),
60 mavenDistribution
.getVersion(),
61 Artifact
.SCOPE_PROVIDED
, mavenDistribution
.getType());
63 artifact
= mavenEmbedder
.createArtifactWithClassifier(
64 mavenDistribution
.getGroupId(), mavenDistribution
65 .getArtifactId(), mavenDistribution
66 .getVersion(), mavenDistribution
.getType(),
67 mavenDistribution
.getClassifier());
71 .resolve(artifact
, remoteRepositories
, localRepository
);
74 } catch (Exception e
) {
75 throw new SlcException("Cannot resolve artifact.", e
);
79 public File
getPackageLocation(MavenFile mavenDistribution
) {
80 return resolve(mavenDistribution
).getFile();
83 public void destroy() {
85 if (mavenEmbedder
!= null) {
88 } catch (MavenEmbedderException e
) {
89 log
.error("Cannot destroy Maven manager", e
);
93 public void setRepositoryId(String repositoryId
) {
94 this.repositoryId
= repositoryId
;
97 public void setRepositoryUrl(String repositoryUrl
) {
98 this.repositoryUrl
= repositoryUrl
;
101 public void setLocalRepositoryPath(String localRepositoryPath
) {
102 this.localRepositoryPath
= localRepositoryPath
;