Skip to content

Commit 862f42b

Browse files
committed
Support for configuring snapshot policy enablement and update for Maven projects
1 parent 9c9bcb5 commit 862f42b

File tree

8 files changed

+80
-17
lines changed

8 files changed

+80
-17
lines changed

build-info-extractor-maven3/src/main/java/org/jfrog/build/extractor/maven/ArtifactoryProjectBuilder.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ private List<ArtifactRepository> getRepositories() {
5151
List<ArtifactRepository> repositories = new ArrayList<>();
5252
ProxySelector proxySelector = new ProxySelector(resolutionHelper.getHttpProxyHost(), resolutionHelper.getHttpProxyPort(), resolutionHelper.getHttpProxyUsername(), resolutionHelper.getHttpProxyPassword(), resolutionHelper.getHttpsProxyHost(), resolutionHelper.getHttpsProxyPort(), resolutionHelper.getHttpsProxyUsername(), resolutionHelper.getHttpsProxyPassword(), resolutionHelper.getNoProxy());
5353

54-
ArtifactoryPluginResolution artifactoryResolution = new ArtifactoryPluginResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, resolutionHelper.getLogger());
54+
boolean isSnapshotEnabled = !resolutionHelper.isSnapshotDisabled();
55+
ArtifactoryPluginResolution artifactoryResolution = new ArtifactoryPluginResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, resolutionHelper.getLogger())
56+
.setSnapshotEnabled(isSnapshotEnabled)
57+
.setSnapshotUpdatePolicy(resolutionHelper.getSnapshotUpdatePolicy());
5558
ArtifactRepository snapshotRepository = artifactoryResolution.createSnapshotRepository();
5659
if (snapshotRepository != null) {
5760
repositories.add(snapshotRepository);

build-info-extractor-maven3/src/main/java/org/jfrog/build/extractor/maven/resolver/ArtifactoryEclipseResolversHelper.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ void initResolutionRepositories(RepositorySystemSession session) {
4343
List<RemoteRepository> getResolutionRepositories(RepositorySystemSession session) {
4444
if (resolutionRepositories.isEmpty()) {
4545
initResolutionHelper(session);
46-
org.jfrog.build.extractor.ProxySelector proxySelector = new org.jfrog.build.extractor.ProxySelector(resolutionHelper.getHttpProxyHost(), resolutionHelper.getHttpProxyPort(), resolutionHelper.getHttpProxyUsername(), resolutionHelper.getHttpProxyPassword(), resolutionHelper.getHttpsProxyHost(), resolutionHelper.getHttpsProxyPort(), resolutionHelper.getHttpsProxyUsername(), resolutionHelper.getHttpsProxyPassword(), resolutionHelper.getNoProxy());
47-
ArtifactoryResolution artifactoryResolution = new ArtifactoryResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, logger);
46+
ArtifactoryResolution artifactoryResolution = getArtifactoryResolution();
4847
snapshotRepository = artifactoryResolution.createSnapshotRepository();
4948
if (snapshotRepository != null) {
5049
resolutionRepositories.add(snapshotRepository);
@@ -57,6 +56,13 @@ List<RemoteRepository> getResolutionRepositories(RepositorySystemSession session
5756
return resolutionRepositories;
5857
}
5958

59+
private ArtifactoryResolution getArtifactoryResolution() {
60+
ProxySelector proxySelector = new ProxySelector(resolutionHelper.getHttpProxyHost(), resolutionHelper.getHttpProxyPort(), resolutionHelper.getHttpProxyUsername(), resolutionHelper.getHttpProxyPassword(), resolutionHelper.getHttpsProxyHost(), resolutionHelper.getHttpsProxyPort(), resolutionHelper.getHttpsProxyUsername(), resolutionHelper.getHttpsProxyPassword(), resolutionHelper.getNoProxy());
61+
return new ArtifactoryResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, logger)
62+
.setSnapshotEnabled(isSnapshotEnabled())
63+
.setSnapshotUpdatePolicy(resolutionHelper.getSnapshotUpdatePolicy());
64+
}
65+
6066
private void initResolutionHelper(RepositorySystemSession session) {
6167
if (resolutionHelper.isInitialized()) {
6268
return;
@@ -70,8 +76,7 @@ private void initResolutionHelper(RepositorySystemSession session) {
7076
List<ArtifactRepository> getResolutionPluginRepositories(RepositorySystemSession session) {
7177
if (resolutionPluginRepositories.isEmpty()) {
7278
initResolutionHelper(session);
73-
ProxySelector proxySelector = new ProxySelector(resolutionHelper.getHttpProxyHost(), resolutionHelper.getHttpProxyPort(), resolutionHelper.getHttpProxyUsername(), resolutionHelper.getHttpProxyPassword(), resolutionHelper.getHttpsProxyHost(), resolutionHelper.getHttpsProxyPort(), resolutionHelper.getHttpsProxyUsername(), resolutionHelper.getHttpsProxyPassword(), resolutionHelper.getNoProxy());
74-
ArtifactoryPluginResolution repositoryBuilder = new ArtifactoryPluginResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, logger);
79+
ArtifactoryPluginResolution repositoryBuilder = getArtifactoryPluginResolution();
7580
ArtifactRepository snapshotRepository = repositoryBuilder.createSnapshotRepository();
7681
if (snapshotRepository != null) {
7782
resolutionPluginRepositories.add(snapshotRepository);
@@ -84,6 +89,13 @@ List<ArtifactRepository> getResolutionPluginRepositories(RepositorySystemSession
8489
return resolutionPluginRepositories;
8590
}
8691

92+
private ArtifactoryPluginResolution getArtifactoryPluginResolution() {
93+
ProxySelector proxySelector = new ProxySelector(resolutionHelper.getHttpProxyHost(), resolutionHelper.getHttpProxyPort(), resolutionHelper.getHttpProxyUsername(), resolutionHelper.getHttpProxyPassword(), resolutionHelper.getHttpsProxyHost(), resolutionHelper.getHttpsProxyPort(), resolutionHelper.getHttpsProxyUsername(), resolutionHelper.getHttpsProxyPassword(), resolutionHelper.getNoProxy());
94+
return new ArtifactoryPluginResolution(resolutionHelper.getRepoReleaseUrl(), resolutionHelper.getRepoSnapshotUrl(), resolutionHelper.getRepoUsername(), resolutionHelper.getRepoPassword(), proxySelector, logger)
95+
.setSnapshotEnabled(isSnapshotEnabled())
96+
.setSnapshotUpdatePolicy(resolutionHelper.getSnapshotUpdatePolicy());
97+
}
98+
8799
RemoteRepository getSnapshotRepository(RepositorySystemSession session) {
88100
// Init repositories configured in the Artifactory plugin:
89101
initResolutionRepositories(session);
@@ -99,4 +111,8 @@ RemoteRepository getReleaseRepository(RepositorySystemSession session) {
99111

100112
return releaseRepository;
101113
}
114+
115+
private boolean isSnapshotEnabled() {
116+
return !resolutionHelper.isSnapshotDisabled();
117+
}
102118
}

build-info-extractor-maven3/src/main/java/org/jfrog/build/extractor/maven/resolver/ArtifactoryPluginResolution.java

+20-6
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,43 @@
1313
* Those repositories will replace the default Maven repositories.
1414
*/
1515
public class ArtifactoryPluginResolution extends ArtifactoryResolutionRepositoryBase {
16+
private boolean isSnapshotEnabled;
17+
private String snapshotUpdatePolicy;
1618

1719
public ArtifactoryPluginResolution(String repoReleaseUrl, String snapshotRepoUrl, String repoUsername, String repoPassword, ProxySelector proxySelector, Logger logger) {
1820
super(repoReleaseUrl, snapshotRepoUrl, repoUsername, repoPassword, proxySelector, logger);
21+
this.isSnapshotEnabled = true;
22+
this.snapshotUpdatePolicy = ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY;
1923
}
2024

2125
public ArtifactRepository createSnapshotRepository() {
2226
if (super.shouldCreateSnapshotRepository()) {
23-
return createDefaultRepository(snapshotRepoUrl, "artifactory-snapshot", false, true);
27+
return createDefaultRepository(snapshotRepoUrl, "artifactory-snapshot", false, this.isSnapshotEnabled, this.snapshotUpdatePolicy);
2428
}
2529
return null;
2630
}
2731

2832
public ArtifactRepository createReleaseRepository() {
2933
if (super.shouldCreateReleaseRepository()) {
3034
String repositoryId = snapshotPolicyEnabled() ? "artifactory-release-snapshot" : "artifactory-release";
31-
return createDefaultRepository(releaseRepoUrl, repositoryId, true, snapshotPolicyEnabled());
35+
return createDefaultRepository(releaseRepoUrl, repositoryId, true, snapshotPolicyEnabled(), this.snapshotUpdatePolicy);
3236
}
3337
return null;
3438
}
3539

36-
private ArtifactRepository createDefaultRepository(String repoUrl, String repoId, boolean releasePolicy, Boolean snapshotPolicy) {
40+
public ArtifactoryPluginResolution setSnapshotEnabled(boolean isSnapshotEnabled) {
41+
this.isSnapshotEnabled = isSnapshotEnabled;
42+
return this;
43+
}
44+
45+
public ArtifactoryPluginResolution setSnapshotUpdatePolicy(String snapshotUpdatePolicy) {
46+
this.snapshotUpdatePolicy = snapshotUpdatePolicy;
47+
return this;
48+
}
49+
50+
private ArtifactRepository createDefaultRepository(String repoUrl, String repoId, boolean releasePolicy, Boolean snapshotPolicy, String snapshotUpdatePolicy) {
3751
ArtifactRepository repository = new MavenArtifactRepository();
38-
setPolicy(repository, releasePolicy, snapshotPolicy);
52+
setPolicy(repository, releasePolicy, snapshotPolicy, snapshotUpdatePolicy);
3953
repository.setLayout(new DefaultRepositoryLayout());
4054
repository.setUrl(repoUrl);
4155
repository.setId(repoId);
@@ -44,10 +58,10 @@ private ArtifactRepository createDefaultRepository(String repoUrl, String repoId
4458
return repository;
4559
}
4660

47-
private void setPolicy(ArtifactRepository snapshotPluginRepository, boolean releasePolicyEnabled, boolean snapshotPolicyEnabled) {
61+
private void setPolicy(ArtifactRepository snapshotPluginRepository, boolean releasePolicyEnabled, boolean snapshotPolicyEnabled, String snapshotUpdatePolicy) {
4862
ArtifactRepositoryPolicy releasePolicy = new ArtifactRepositoryPolicy(releasePolicyEnabled, ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);
4963
snapshotPluginRepository.setReleaseUpdatePolicy(releasePolicy);
50-
ArtifactRepositoryPolicy snapshotPolicy = new ArtifactRepositoryPolicy(snapshotPolicyEnabled, ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);
64+
ArtifactRepositoryPolicy snapshotPolicy = new ArtifactRepositoryPolicy(snapshotPolicyEnabled, snapshotUpdatePolicy, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);
5165
snapshotPluginRepository.setSnapshotUpdatePolicy(snapshotPolicy);
5266
}
5367

build-info-extractor-maven3/src/main/java/org/jfrog/build/extractor/maven/resolver/ArtifactoryResolution.java

+20-6
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,45 @@
1313
* Those repositories will be used instead of the default maven repositories.
1414
*/
1515
public class ArtifactoryResolution extends ArtifactoryResolutionRepositoryBase {
16+
private boolean isSnapshotEnabled;
17+
private String snapshotUpdatePolicy;
1618

1719
public ArtifactoryResolution(String repoReleaseUrl, String snapshotRepoUrl, String repoUsername, String repoPassword, ProxySelector proxySelector, Logger logger) {
1820
super(repoReleaseUrl, snapshotRepoUrl, repoUsername, repoPassword, proxySelector, logger);
21+
this.isSnapshotEnabled = true;
22+
this.snapshotUpdatePolicy = RepositoryPolicy.UPDATE_POLICY_DAILY;
1923
}
2024

2125
public RemoteRepository createSnapshotRepository() {
2226
if (super.shouldCreateSnapshotRepository()) {
23-
return createRepository(snapshotRepoUrl, "artifactory-snapshot", false, true);
27+
return createRepository(snapshotRepoUrl, "artifactory-snapshot", false, this.isSnapshotEnabled, this.snapshotUpdatePolicy);
2428
}
2529
return null;
2630
}
2731

2832
public RemoteRepository createReleaseRepository() {
2933
if (shouldCreateReleaseRepository()) {
3034
String repositoryId = snapshotPolicyEnabled() ? "artifactory-release-snapshot" : "artifactory-release";
31-
return createRepository(releaseRepoUrl, repositoryId, true, snapshotPolicyEnabled());
35+
return createRepository(releaseRepoUrl, repositoryId, true, snapshotPolicyEnabled(), this.snapshotUpdatePolicy);
3236
}
3337
return null;
3438
}
3539

36-
private RemoteRepository createRepository(String repoUrl, String repoId, boolean releasePolicy, Boolean snapshotPolicy) {
40+
public ArtifactoryResolution setSnapshotEnabled(boolean isSnapshotEnabled) {
41+
this.isSnapshotEnabled = isSnapshotEnabled;
42+
return this;
43+
}
44+
45+
public ArtifactoryResolution setSnapshotUpdatePolicy(String snapshotUpdatePolicy) {
46+
this.snapshotUpdatePolicy = snapshotUpdatePolicy;
47+
return this;
48+
}
49+
50+
private RemoteRepository createRepository(String repoUrl, String repoId, boolean releasePolicy, Boolean snapshotPolicy, String snapshotUpdatePolicy) {
3751
RemoteRepository.Builder builder = new RemoteRepository.Builder(repoId, "default", repoUrl);
3852
setAuthentication(builder);
3953
setProxy(builder, repoUrl);
40-
setPolicy(builder, releasePolicy, snapshotPolicy);
54+
setPolicy(builder, releasePolicy, snapshotPolicy, snapshotUpdatePolicy);
4155
return builder.build();
4256
}
4357

@@ -49,10 +63,10 @@ private void setAuthentication(RemoteRepository.Builder builder) {
4963
}
5064
}
5165

52-
private void setPolicy(RemoteRepository.Builder builder, boolean releasePolicyEnabled, boolean snapshotPolicyEnabled) {
66+
private void setPolicy(RemoteRepository.Builder builder, boolean releasePolicyEnabled, boolean snapshotPolicyEnabled, String snapshotUpdatePolicy) {
5367
RepositoryPolicy releasePolicy = new RepositoryPolicy(releasePolicyEnabled, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
5468
builder.setReleasePolicy(releasePolicy);
55-
RepositoryPolicy snapshotPolicy = new RepositoryPolicy(snapshotPolicyEnabled, RepositoryPolicy.UPDATE_POLICY_DAILY, RepositoryPolicy.CHECKSUM_POLICY_WARN);
69+
RepositoryPolicy snapshotPolicy = new RepositoryPolicy(snapshotPolicyEnabled, snapshotUpdatePolicy, RepositoryPolicy.CHECKSUM_POLICY_WARN);
5670
builder.setSnapshotPolicy(snapshotPolicy);
5771
}
5872

build-info-extractor-maven3/src/main/java/org/jfrog/build/extractor/maven/resolver/ResolutionHelper.java

+4
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ public String getHttpsProxyPassword() {
113113
return internalConfiguration.httpsProxy.getPassword();
114114
}
115115

116+
public boolean isSnapshotDisabled() { return internalConfiguration.resolver.isSnapshotDisabled(); }
117+
118+
public String getSnapshotUpdatePolicy() { return internalConfiguration.resolver.getSnapshotUpdatePolicy(); }
119+
116120
public Logger getLogger() {
117121
return logger;
118122
}

build-info-extractor/src/main/java/org/jfrog/build/extractor/clientConfiguration/ArtifactoryClientConfiguration.java

+9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.jfrog.build.extractor.ci.Issue;
1010
import org.jfrog.build.extractor.clientConfiguration.util.IssuesTrackerUtils;
1111
import org.jfrog.build.extractor.clientConfiguration.util.encryption.EncryptionKeyPair;
12+
import org.eclipse.aether.repository.RepositoryPolicy;
1213

1314
import javax.crypto.BadPaddingException;
1415
import javax.crypto.IllegalBlockSizeException;
@@ -786,6 +787,14 @@ public String getRepoKey() {
786787
return getStringValue(REPO_KEY);
787788
}
788789

790+
public Boolean isSnapshotDisabled() {
791+
return getBooleanValue(SNAPSHOTS_DISABLED, false);
792+
}
793+
794+
public String getSnapshotUpdatePolicy() {
795+
return getStringValue(SNAPSHOT_UPDATE_POLICY, RepositoryPolicy.UPDATE_POLICY_DAILY);
796+
}
797+
789798
public void setRepoKey(String repoKey) {
790799
setStringValue(REPO_KEY, repoKey);
791800
}

build-info-extractor/src/main/java/org/jfrog/build/extractor/clientConfiguration/ClientConfigurationFields.java

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public interface ClientConfigurationFields {
3030
String DOCKER_HOST = "docker.host";
3131
String URL = "url";
3232
String REPO_KEY = "repoKey";
33+
String SNAPSHOTS_DISABLED = "snapshots.disabled";
34+
String SNAPSHOT_UPDATE_POLICY = "snapshots.updatePolicy";
3335
String DOWN_SNAPSHOT_REPO_KEY = "downSnapshotRepoKey";
3436
// Publish fields
3537
String PUBLISH_ARTIFACTS = "artifacts";

build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ project('build-info-extractor') {
334334
dependencies {
335335
implementation project(':build-info-client')
336336
implementation project(':build-info-api')
337+
implementation "org.eclipse.aether:aether-api:$eclipseAetherVersion"
337338

338339
testImplementation "org.easymock:easymockclassextension:$easymockclassextensionVersion"
339340
testImplementation('org.mock-server:mockserver-netty:5.15.0') {

0 commit comments

Comments
 (0)