Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support disabling Maven Snapshot dependency Resolution & Set Update Policy #2883

Merged
merged 2 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ 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/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250226093426-131ae1505b58

replace github.com/jfrog/build-info-go => github.com/fluxxBot/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be

replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e
8 changes: 4 additions & 4 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/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be h1:K9d43ZYkRj9Y0XI78KZvHlCWdZ7O24np+Xv9C7PKJwk=
github.com/fluxxBot/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
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 @@ -175,8 +177,6 @@ github.com/jedib0t/go-pretty/v6 v6.6.5 h1:9PgMJOVBedpgYLI56jQRJYqngxYAAzfEUua+3N
github.com/jedib0t/go-pretty/v6 v6.6.5/go.mod h1:Uq/HrbhuFty5WSVNfjpQQe47x16RwVGXIveNGEyGtHs=
github.com/jfrog/archiver/v3 v3.6.1 h1:LOxnkw9pOn45DzCbZNFV6K0+6dCsQ0L8mR3ZcujO5eI=
github.com/jfrog/archiver/v3 v3.6.1/go.mod h1:VgR+3WZS4N+i9FaDwLZbq+jeU4B4zctXL+gL4EMzfLw=
github.com/jfrog/build-info-go v1.10.9 h1:mdJ+wlLw2ReFsqC7rifJVlRYLEqYk38uXDYAOZASuGE=
github.com/jfrog/build-info-go v1.10.9/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
github.com/jfrog/froggit-go v1.16.2 h1:F//S83iXH14qsCwYzv0zB2JtjS2pJVEsUoEmYA+37dQ=
github.com/jfrog/froggit-go v1.16.2/go.mod h1:5VpdQfAcbuyFl9x/x8HGm7kVk719kEtW/8YJFvKcHPA=
github.com/jfrog/go-mockhttp v0.3.1 h1:/wac8v4GMZx62viZmv4wazB5GNKs+GxawuS1u3maJH8=
Expand All @@ -187,8 +187,8 @@ 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-core/v2 v2.31.1-0.20250226093426-131ae1505b58 h1:r8aE1Amm8CLbMLMCbNhivs7WqhoLlj+cBhzStohBYOU=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250226093426-131ae1505b58/go.mod h1:8uzry1RGoxmw2aeJVE/8kLIFTXCE23ApLUNRUGFRu90=
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
Loading