Skip to content

Commit 8c4f8b0

Browse files
authored
Remove the need for setting up a dummy repository (#715)
1 parent c1b0da1 commit 8c4f8b0

File tree

1 file changed

+71
-11
lines changed

1 file changed

+71
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jfrog.build.extractor.maven;
22

3+
import org.apache.commons.lang3.StringUtils;
34
import org.apache.maven.artifact.repository.ArtifactRepository;
45
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
56
import org.apache.maven.artifact.repository.MavenArtifactRepository;
@@ -9,37 +10,96 @@
910
import org.apache.maven.project.ProjectBuildingRequest;
1011
import org.apache.maven.project.ProjectBuildingResult;
1112
import org.codehaus.plexus.component.annotations.Component;
13+
import org.codehaus.plexus.component.annotations.Requirement;
14+
import org.jfrog.build.extractor.maven.resolver.ResolutionHelper;
15+
import org.sonatype.aether.repository.RepositoryPolicy;
1216

1317
import javax.inject.Named;
1418
import java.io.File;
1519
import java.util.ArrayList;
16-
import java.util.Collections;
1720
import java.util.List;
21+
import java.util.Properties;
1822

1923
import static org.jfrog.build.api.BuildInfoConfigProperties.PROP_ARTIFACTORY_RESOLUTION_ENABLED;
2024

2125
@Named
22-
@Component( role = DefaultProjectBuilder.class, hint = "default")
26+
@Component(role = DefaultProjectBuilder.class, hint = "default")
2327
public class ArtifactoryProjectBuilder extends DefaultProjectBuilder {
2428

29+
@Requirement
30+
private ResolutionHelper resolutionHelper;
31+
2532
@Override
2633
public List<ProjectBuildingResult> build(List<File> pomFiles, boolean recursive, ProjectBuildingRequest request) throws ProjectBuildingException {
2734
if (Boolean.parseBoolean(System.getProperties().getProperty(PROP_ARTIFACTORY_RESOLUTION_ENABLED))
2835
|| Boolean.parseBoolean(System.getenv(PROP_ARTIFACTORY_RESOLUTION_ENABLED))) {
29-
// We're setting a dummy repository to the list of repositories, which has both snapshot and release policies enabled.
36+
if (!resolutionHelper.isInitialized()) {
37+
Properties allMavenProps = new Properties();
38+
allMavenProps.putAll(request.getSystemProperties());
39+
allMavenProps.putAll(request.getUserProperties());
40+
resolutionHelper.init(allMavenProps);
41+
}
42+
43+
// We're setting the resolver repositories to the list of repositories.
3044
// This repository replaces the central repository.
3145
// This ensures that parent poms with snapshot versions can be downloaded from Artifactory.
32-
request.setRemoteRepositories(getDummyRepo());
46+
List<ArtifactRepository> repositories = getRepositories();
47+
request.setRemoteRepositories(repositories);
48+
request.setPluginArtifactRepositories(repositories);
3349
}
3450
return super.build(pomFiles, recursive, request);
3551
}
3652

37-
private List<ArtifactRepository> getDummyRepo() {
38-
ArtifactRepository repo = new MavenArtifactRepository("dummy",
39-
"http://ArtifactoryDummyRepo./dummy",
40-
new DefaultRepositoryLayout(),
41-
new ArtifactRepositoryPolicy(),
42-
new ArtifactRepositoryPolicy());
43-
return new ArrayList<ArtifactRepository>(Collections.singletonList(repo));
53+
private List<ArtifactRepository> getRepositories() {
54+
List<ArtifactRepository> repositories = new ArrayList<>();
55+
56+
String releaseRepoUrl = resolutionHelper.getRepoReleaseUrl();
57+
String snapshotRepoUrl = resolutionHelper.getRepoSnapshotUrl();
58+
59+
org.apache.maven.artifact.repository.Authentication authentication = null;
60+
if (StringUtils.isNotBlank(resolutionHelper.getRepoUsername())) {
61+
authentication = new org.apache.maven.artifact.repository.Authentication(resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword());
62+
}
63+
org.apache.maven.repository.Proxy proxy = null;
64+
if (StringUtils.isNotBlank(resolutionHelper.getProxyHost())) {
65+
proxy = new org.apache.maven.repository.Proxy();
66+
proxy.setHost(resolutionHelper.getProxyHost());
67+
proxy.setPort(resolutionHelper.getProxyPort());
68+
proxy.setUserName(resolutionHelper.getProxyUsername());
69+
proxy.setPassword(resolutionHelper.getProxyPassword());
70+
}
71+
72+
if (StringUtils.isNotBlank(snapshotRepoUrl)) {
73+
ArtifactRepositoryPolicy snapshotPolicy = new ArtifactRepositoryPolicy(true, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
74+
ArtifactRepositoryPolicy releasePolicy = new ArtifactRepositoryPolicy(false, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
75+
MavenArtifactRepository repository = new MavenArtifactRepository("artifactory-snapshot", snapshotRepoUrl, new DefaultRepositoryLayout(), snapshotPolicy, releasePolicy);
76+
77+
if (authentication != null) {
78+
repository.setAuthentication(authentication);
79+
}
80+
if (proxy != null) {
81+
repository.setProxy(proxy);
82+
}
83+
84+
repositories.add(repository);
85+
}
86+
if (StringUtils.isNotBlank(releaseRepoUrl)) {
87+
boolean snapshotPolicyEnabled = StringUtils.isBlank(snapshotRepoUrl);
88+
String repositoryId = snapshotPolicyEnabled ? "artifactory-release-snapshot" : "artifactory-release";
89+
90+
ArtifactRepositoryPolicy snapshotPolicy = new ArtifactRepositoryPolicy(snapshotPolicyEnabled, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
91+
ArtifactRepositoryPolicy releasePolicy = new ArtifactRepositoryPolicy(true, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
92+
MavenArtifactRepository repository = new MavenArtifactRepository(repositoryId, releaseRepoUrl, new DefaultRepositoryLayout(), snapshotPolicy, releasePolicy);
93+
94+
if (authentication != null) {
95+
repository.setAuthentication(authentication);
96+
}
97+
if (proxy != null) {
98+
repository.setProxy(proxy);
99+
}
100+
101+
repositories.add(repository);
102+
}
103+
return repositories;
44104
}
45105
}

0 commit comments

Comments
 (0)