Skip to content

Commit

Permalink
Extended support for snapshot policy for resolver in Maven Projects
Browse files Browse the repository at this point in the history
  • Loading branch information
fluxxBot committed Feb 25, 2025
1 parent f8b6f63 commit 17cd099
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 10 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,6 @@ require (

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

replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852
replace github.com/jfrog/jfrog-cli-core/v2 => github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250225085523-d84cee76d149

replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250225085523-d84cee76d149 h1:rrWXCPwkZ/Q3tQM103hZnxHw59I8InL9PZY2U6Kd7Fo=
github.com/fluxxBot/jfrog-cli-core/v2 v2.31.1-0.20250225085523-d84cee76d149/go.mod h1:VAVY5umw94aXf+yGzKCoEqijeUjIUNv+ikJUeQkd9tw=
github.com/forPelevin/gomoji v1.2.0 h1:9k4WVSSkE1ARO/BWywxgEUBvR/jMnao6EZzrql5nxJ8=
github.com/forPelevin/gomoji v1.2.0/go.mod h1:8+Z3KNGkdslmeGZBC3tCrwMrcPy5GRzAD+gL9NAwMXg=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
Expand Down Expand Up @@ -187,8 +189,6 @@ github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYL
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05 h1:UV9W1ZImGWLks4+w+zg9hMtySvEIU+WxO73lsO6NIyY=
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05/go.mod h1:223EqxDx7Ogrj7zJZkKAoFuQJStC5qtPXjwsf+r6d/A=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852 h1:tz6j/XO+BDoemr2LvQHN16ZHEG6dHT+79A+O+AvxXfk=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852/go.mod h1:VAVY5umw94aXf+yGzKCoEqijeUjIUNv+ikJUeQkd9tw=
github.com/jfrog/jfrog-cli-platform-services v1.7.0 h1:u0AOyG4JX3VT7xhEeA9gDpBgW8tYILONpQURtzR3FkI=
github.com/jfrog/jfrog-cli-platform-services v1.7.0/go.mod h1:u3lMRG7XC8MeUy/OPkHkZnsgCMIi0br4sjk2/W1Pm8I=
github.com/jfrog/jfrog-cli-security v1.15.0 h1:TYNIID231X/AivYtptDCF25JyH8qTQht6ISHRfwejL8=
Expand Down
61 changes: 61 additions & 0 deletions maven_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import (
"github.com/jfrog/jfrog-cli-core/v2/utils/ioutils"
"github.com/jfrog/jfrog-cli/utils/cliutils"
"github.com/jfrog/jfrog-client-go/http/httpclient"
"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v2"
"net/http"
"os"
"os/exec"
Expand Down Expand Up @@ -435,3 +437,62 @@ func prepareMavenSetupTest(t *testing.T, homeDir string) func() {
restoreDir()
}
}

func TestMavenConfig(t *testing.T) {
jfrogCli := initializeMvnProjectAndReturnExecutor(t)

err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn",
"--disable-snapshots=true", "--snapshots-update-policy=never")
assert.NoError(t, err)

configFile := readConfigFileCreated(t)

assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.DisableSnapshots, true)
assert.Equal(t, configFile.Resolver.SnapshotsUpdatePolicy, "never")

cleanMavenTest(t)
}

func TestMavenConfigWhenSnapshotPolicyNotPresent(t *testing.T) {
jfrogCli := initializeMvnProjectAndReturnExecutor(t)

err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn", "--repo-deploy-releases=default", "--repo-deploy-snapshots=default")
assert.NoError(t, err)

configFile := readConfigFileCreated(t)

assert.NoError(t, err)
assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
assert.Empty(t, configFile.Resolver.DisableSnapshots)
assert.Empty(t, configFile.Resolver.SnapshotsUpdatePolicy)

cleanMavenTest(t)
}

func initializeMvnProjectAndReturnExecutor(t *testing.T) *coreTests.JfrogCli {
initMavenTest(t, false)
pomDir := createSimpleMavenProject(t)

oldHomeDir := changeWD(t, pomDir)
defer clientTestUtils.ChangeDirAndAssert(t, oldHomeDir)

jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "")

return jfrogCli
}

func readConfigFileCreated(t *testing.T) commands.ConfigFile {
configFile := commands.ConfigFile{
Version: 1,
ConfigType: project.Maven.String(),
}
mavenConfigPath := filepath.Join(".jfrog", "projects", "maven.yaml")
content, err := fileutils.ReadFile(mavenConfigPath)
assert.NoError(t, err)
err = yaml.Unmarshal(content, &configFile)
assert.NoError(t, err)
return configFile
}
24 changes: 17 additions & 7 deletions utils/cliutils/commandsflags.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,12 +332,14 @@ const (
repoDeploy = "repo-deploy"

// Unique maven-config flags
repoResolveReleases = "repo-resolve-releases"
repoResolveSnapshots = "repo-resolve-snapshots"
repoDeployReleases = "repo-deploy-releases"
repoDeploySnapshots = "repo-deploy-snapshots"
includePatterns = "include-patterns"
excludePatterns = "exclude-patterns"
repoResolveReleases = "repo-resolve-releases"
repoResolveSnapshots = "repo-resolve-snapshots"
repoDeployReleases = "repo-deploy-releases"
repoDeploySnapshots = "repo-deploy-snapshots"
includePatterns = "include-patterns"
excludePatterns = "exclude-patterns"
disableSnapshots = "disable-snapshots"
snapshotsUpdatePolicy = "snapshots-update-policy"

// Unique gradle-config flags
usesPlugin = "uses-plugin"
Expand Down Expand Up @@ -1117,6 +1119,14 @@ var flagsMap = map[string]cli.Flag{
Name: excludePatterns,
Usage: "[Optional] Filter deployed artifacts by setting a wildcard pattern that specifies which artifacts to exclude. You may provide multiple patterns separated by ', '.` `",
},
disableSnapshots: cli.BoolFlag{
Name: disableSnapshots,
Usage: "[Default: false] Set to true to disable snapshot resolution.` `",
},
snapshotsUpdatePolicy: cli.StringFlag{
Name: snapshotsUpdatePolicy,
Usage: "[Optional] Set snapshot update policy. Defaults to daily.` `",
},
repoResolve: cli.StringFlag{
Name: repoResolve,
Usage: "[Optional] Repository for dependencies resolution.` `",
Expand Down Expand Up @@ -1837,7 +1847,7 @@ var commandFlags = map[string][]string{
global, serverIdResolve, repoResolve,
},
MvnConfig: {
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper,
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper, disableSnapshots, snapshotsUpdatePolicy,
},
GradleConfig: {
global, serverIdResolve, serverIdDeploy, repoResolve, repoDeploy, usesPlugin, UseWrapper, deployMavenDesc,
Expand Down

0 comments on commit 17cd099

Please sign in to comment.