Skip to content

Commit 7746fa4

Browse files
committed
Extended support for snapshot policy for resolver in Maven Projects
1 parent f8b6f63 commit 7746fa4

File tree

4 files changed

+79
-10
lines changed

4 files changed

+79
-10
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,6 @@ require (
191191

192192
replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05
193193

194-
replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852
194+
replace github.com/jfrog/jfrog-cli-core/v2 => github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250224070212-627f9cd46cb2
195195

196196
replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
9292
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
9393
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
9494
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
95+
github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250224070212-627f9cd46cb2 h1:A9haPoRwetN9ngUiH/iy1X+QQDv+NnnRsOSIF9SODbY=
96+
github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250224070212-627f9cd46cb2/go.mod h1:VAVY5umw94aXf+yGzKCoEqijeUjIUNv+ikJUeQkd9tw=
9597
github.com/forPelevin/gomoji v1.2.0 h1:9k4WVSSkE1ARO/BWywxgEUBvR/jMnao6EZzrql5nxJ8=
9698
github.com/forPelevin/gomoji v1.2.0/go.mod h1:8+Z3KNGkdslmeGZBC3tCrwMrcPy5GRzAD+gL9NAwMXg=
9799
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
@@ -187,8 +189,6 @@ github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYL
187189
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
188190
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05 h1:UV9W1ZImGWLks4+w+zg9hMtySvEIU+WxO73lsO6NIyY=
189191
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05/go.mod h1:223EqxDx7Ogrj7zJZkKAoFuQJStC5qtPXjwsf+r6d/A=
190-
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852 h1:tz6j/XO+BDoemr2LvQHN16ZHEG6dHT+79A+O+AvxXfk=
191-
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852/go.mod h1:VAVY5umw94aXf+yGzKCoEqijeUjIUNv+ikJUeQkd9tw=
192192
github.com/jfrog/jfrog-cli-platform-services v1.7.0 h1:u0AOyG4JX3VT7xhEeA9gDpBgW8tYILONpQURtzR3FkI=
193193
github.com/jfrog/jfrog-cli-platform-services v1.7.0/go.mod h1:u3lMRG7XC8MeUy/OPkHkZnsgCMIi0br4sjk2/W1Pm8I=
194194
github.com/jfrog/jfrog-cli-security v1.15.0 h1:TYNIID231X/AivYtptDCF25JyH8qTQht6ISHRfwejL8=

maven_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import (
99
"github.com/jfrog/jfrog-cli-core/v2/utils/ioutils"
1010
"github.com/jfrog/jfrog-cli/utils/cliutils"
1111
"github.com/jfrog/jfrog-client-go/http/httpclient"
12+
"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
1213
"github.com/stretchr/testify/require"
14+
"gopkg.in/yaml.v2"
1315
"net/http"
1416
"os"
1517
"os/exec"
@@ -435,3 +437,60 @@ func prepareMavenSetupTest(t *testing.T, homeDir string) func() {
435437
restoreDir()
436438
}
437439
}
440+
441+
func TestMavenConfig(t *testing.T) {
442+
initMavenTest(t, true)
443+
pomDir := createSimpleMavenProject(t)
444+
445+
oldHomeDir := changeWD(t, pomDir)
446+
defer clientTestUtils.ChangeDirAndAssert(t, oldHomeDir)
447+
448+
jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "")
449+
450+
err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn",
451+
"--enable-snapshots=true", "--snapshots-update-policy=never")
452+
assert.NoError(t, err)
453+
454+
configFile := commands.ConfigFile{
455+
Version: 1,
456+
ConfigType: project.Maven.String(),
457+
}
458+
mavenConfigPath := filepath.Join(".jfrog", "projects", "maven.yaml")
459+
content, err := fileutils.ReadFile(mavenConfigPath)
460+
assert.NoError(t, err)
461+
err = yaml.Unmarshal(content, &configFile)
462+
assert.NoError(t, err)
463+
assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
464+
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
465+
assert.Equal(t, configFile.Resolver.EnableSnapshots, true)
466+
assert.Equal(t, configFile.Resolver.SnapshotsUpdatePolicy, "never")
467+
cleanMavenTest(t)
468+
}
469+
470+
func TestMavenConfigWhenSnapshotPolicyNotPresent(t *testing.T) {
471+
initMavenTest(t, true)
472+
pomDir := createSimpleMavenProject(t)
473+
474+
oldHomeDir := changeWD(t, pomDir)
475+
defer clientTestUtils.ChangeDirAndAssert(t, oldHomeDir)
476+
477+
jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "")
478+
479+
err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn")
480+
assert.NoError(t, err)
481+
482+
configFile := commands.ConfigFile{
483+
Version: 1,
484+
ConfigType: project.Maven.String(),
485+
}
486+
mavenConfigPath := filepath.Join(".jfrog", "projects", "maven.yaml")
487+
content, err := fileutils.ReadFile(mavenConfigPath)
488+
assert.NoError(t, err)
489+
err = yaml.Unmarshal(content, &configFile)
490+
assert.NoError(t, err)
491+
assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
492+
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
493+
assert.Equal(t, configFile.Resolver.EnableSnapshots, true)
494+
assert.Empty(t, configFile.Resolver.SnapshotsUpdatePolicy)
495+
cleanMavenTest(t)
496+
}

utils/cliutils/commandsflags.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -332,12 +332,14 @@ const (
332332
repoDeploy = "repo-deploy"
333333

334334
// Unique maven-config flags
335-
repoResolveReleases = "repo-resolve-releases"
336-
repoResolveSnapshots = "repo-resolve-snapshots"
337-
repoDeployReleases = "repo-deploy-releases"
338-
repoDeploySnapshots = "repo-deploy-snapshots"
339-
includePatterns = "include-patterns"
340-
excludePatterns = "exclude-patterns"
335+
repoResolveReleases = "repo-resolve-releases"
336+
repoResolveSnapshots = "repo-resolve-snapshots"
337+
repoDeployReleases = "repo-deploy-releases"
338+
repoDeploySnapshots = "repo-deploy-snapshots"
339+
includePatterns = "include-patterns"
340+
excludePatterns = "exclude-patterns"
341+
enableSnapshots = "enable-snapshots"
342+
snapshotsUpdatePolicy = "snapshots-update-policy"
341343

342344
// Unique gradle-config flags
343345
usesPlugin = "uses-plugin"
@@ -1117,6 +1119,14 @@ var flagsMap = map[string]cli.Flag{
11171119
Name: excludePatterns,
11181120
Usage: "[Optional] Filter deployed artifacts by setting a wildcard pattern that specifies which artifacts to exclude. You may provide multiple patterns separated by ', '.` `",
11191121
},
1122+
enableSnapshots: cli.BoolFlag{
1123+
Name: enableSnapshots,
1124+
Usage: "[Optional] Set to true to enable snapshot resolution.` `",
1125+
},
1126+
snapshotsUpdatePolicy: cli.StringFlag{
1127+
Name: snapshotsUpdatePolicy,
1128+
Usage: "[Optional] Set snapshot update policy. Defaults to daily.` `",
1129+
},
11201130
repoResolve: cli.StringFlag{
11211131
Name: repoResolve,
11221132
Usage: "[Optional] Repository for dependencies resolution.` `",
@@ -1837,7 +1847,7 @@ var commandFlags = map[string][]string{
18371847
global, serverIdResolve, repoResolve,
18381848
},
18391849
MvnConfig: {
1840-
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper,
1850+
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper, enableSnapshots, snapshotsUpdatePolicy,
18411851
},
18421852
GradleConfig: {
18431853
global, serverIdResolve, serverIdDeploy, repoResolve, repoDeploy, usesPlugin, UseWrapper, deployMavenDesc,

0 commit comments

Comments
 (0)