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 localRepositoryPath
;
21 private ArtifactRepository localRepository
;
22 private List
<ArtifactRepository
> remoteRepositoriesInternal
;
23 private List
<RemoteRepository
> remoteRepositories
= new Vector
<RemoteRepository
>();
25 private MavenEmbedder mavenEmbedder
;
29 mavenEmbedder
= new MavenEmbedder();
30 mavenEmbedder
.setOffline(true);
31 mavenEmbedder
.setClassLoader(Thread
.currentThread()
32 .getContextClassLoader());
33 mavenEmbedder
.start();
35 mavenEmbedder
.setLocalRepositoryDirectory(new File(
36 localRepositoryPath
));
38 localRepository
= mavenEmbedder
.getLocalRepository();
40 remoteRepositoriesInternal
= new Vector
<ArtifactRepository
>();
41 for (RemoteRepository remoteRepository
: remoteRepositories
) {
43 ArtifactRepository repository
= mavenEmbedder
.createRepository(
44 remoteRepository
.getUrl(), remoteRepository
.getId());
45 remoteRepositoriesInternal
.add(repository
);
48 } catch (Exception e
) {
49 throw new SlcException("Cannot initialize Maven manager", e
);
53 private Artifact
resolve(MavenFile mavenDistribution
) {
56 if (mavenDistribution
.getClassifier() == null) {
57 artifact
= mavenEmbedder
.createArtifact(mavenDistribution
58 .getGroupId(), mavenDistribution
.getArtifactId(),
59 mavenDistribution
.getVersion(),
60 Artifact
.SCOPE_PROVIDED
, mavenDistribution
.getType());
62 artifact
= mavenEmbedder
.createArtifactWithClassifier(
63 mavenDistribution
.getGroupId(), mavenDistribution
64 .getArtifactId(), mavenDistribution
65 .getVersion(), mavenDistribution
.getType(),
66 mavenDistribution
.getClassifier());
69 mavenEmbedder
.resolve(artifact
, remoteRepositoriesInternal
,
73 } catch (Exception e
) {
74 throw new SlcException("Cannot resolve artifact.", e
);
78 public File
getPackageLocation(MavenFile mavenDistribution
) {
79 return resolve(mavenDistribution
).getFile();
82 public void destroy() {
84 if (mavenEmbedder
!= null) {
87 } catch (MavenEmbedderException e
) {
88 log
.error("Cannot destroy Maven manager", e
);
92 public void setLocalRepositoryPath(String localRepositoryPath
) {
93 this.localRepositoryPath
= localRepositoryPath
;
96 public List
<RemoteRepository
> getRemoteRepositories() {
97 return remoteRepositories
;
100 public void setRemoteRepositories(List
<RemoteRepository
> remoteRepositories
) {
101 this.remoteRepositories
= remoteRepositories
;