Skip to content

Commit 394045f

Browse files
authored
graadle module dependnecies that have the same version as root project should not be detected as snapshots | fixes #827 (#831)
1 parent a158fe6 commit 394045f

File tree

2 files changed

+46
-17
lines changed

2 files changed

+46
-17
lines changed

src/integration/groovy/pl/allegro/tech/build/axion/release/VerifyReleaseIntegrationTest.groovy

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ class VerifyReleaseIntegrationTest extends BaseIntegrationTest {
1818
result.task(":verifyRelease").outcome == TaskOutcome.SUCCESS
1919
}
2020

21-
def "should work in multimodule project setup"() {
21+
def "should work in multimodule project setup versioning every module separately"() {
2222
given:
23-
initialMultiModuleProjectConfiguration()
23+
initialMultiModuleMultiVersionProjectConfiguration()
2424

2525
when:
2626
def result = runGradle(':verifyRelease')
@@ -29,20 +29,56 @@ class VerifyReleaseIntegrationTest extends BaseIntegrationTest {
2929
result.task(":verifyRelease").outcome == TaskOutcome.SUCCESS
3030
}
3131

32-
void initialMultiModuleProjectConfiguration() {
32+
def "should work in multimodule project setup with the same version for every module"() {
33+
given:
34+
initialMultiModuleSingleVersionProjectConfiguration()
35+
36+
when:
37+
def result = runGradle(':verifyRelease')
38+
39+
then:
40+
result.task(":verifyRelease").outcome == TaskOutcome.SUCCESS
41+
}
42+
43+
void initialMultiModuleSingleVersionProjectConfiguration() {
3344
buildFile('''
34-
scmVersion {
35-
versionCreator "versionWithBranch"
45+
apply plugin: 'java'
46+
47+
allprojects {
48+
version = scmVersion.version
49+
}
50+
51+
dependencies {
52+
implementation(project(":module1"))
3653
}
54+
''')
55+
generateSettingsFile(temporaryFolder)
56+
generateGitIgnoreFile(temporaryFolder)
57+
generateSubmoduleBuildFile("module1")
58+
repository.commit(['.'], "initial commit of top level project")
59+
}
60+
61+
void initialMultiModuleMultiVersionProjectConfiguration() {
62+
buildFile('''
63+
apply plugin: 'java'
64+
3765
allprojects {
66+
scmVersion {
67+
tag {
68+
prefix = name
69+
}
70+
}
3871
version = scmVersion.version
3972
}
73+
74+
dependencies {
75+
implementation(project(":module1"))
76+
}
4077
''')
4178
generateSettingsFile(temporaryFolder)
4279
generateGitIgnoreFile(temporaryFolder)
4380
generateSubmoduleBuildFile("module1")
4481
repository.commit(['.'], "initial commit of top level project")
45-
runGradle(":createRelease", "-Prelease.version=1.0.0", '-Prelease.disableChecks')
4682
}
4783

4884
void generateSubmoduleBuildFile(String projectName) {
@@ -53,12 +89,6 @@ class VerifyReleaseIntegrationTest extends BaseIntegrationTest {
5389
plugins {
5490
id 'java-platform'
5591
}
56-
57-
dependencies {
58-
constraints {
59-
api "multimodule-project:multimodule-project:${version}"
60-
}
61-
}
6292
'''
6393
}
6494

src/main/java/pl/allegro/tech/build/axion/release/domain/SnapshotDependenciesChecker.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.gradle.api.artifacts.Configuration;
55
import org.gradle.api.artifacts.Dependency;
66
import org.gradle.api.artifacts.DependencyConstraint;
7+
import org.gradle.api.artifacts.ProjectDependency;
8+
import org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependencyConstraint;
79

810
import java.util.Collection;
911
import java.util.HashSet;
@@ -13,30 +15,27 @@
1315
public class SnapshotDependenciesChecker {
1416

1517
public Collection<String> snapshotVersions(Project project) {
16-
Set<String> projectVersions = project.getRootProject().getAllprojects().stream()
17-
.map(this::toFullVersion)
18-
.collect(Collectors.toSet());
19-
2018
Set<Configuration> configurations = project.getRootProject().getAllprojects().stream()
2119
.flatMap(p -> p.getConfigurations().stream())
2220
.collect(Collectors.toSet());
2321

2422
Set<String> allDependenciesVersions = new HashSet<>();
2523
for (Configuration config : configurations) {
2624
Set<String> versions = config.getAllDependencies().stream()
25+
.filter(it -> !(it instanceof ProjectDependency))
2726
.filter(this::isSnapshot)
2827
.map(this::toFullVersion)
2928
.collect(Collectors.toSet());
3029

3130
Set<String> constraintVersions = config.getAllDependencyConstraints().stream()
31+
.filter(it -> !(it instanceof DefaultProjectDependencyConstraint))
3232
.filter(this::isSnapshot)
3333
.map(this::toFullVersion)
3434
.collect(Collectors.toSet());
3535

3636
allDependenciesVersions.addAll(versions);
3737
allDependenciesVersions.addAll(constraintVersions);
3838
}
39-
allDependenciesVersions.removeAll(projectVersions);
4039
return allDependenciesVersions;
4140
}
4241

0 commit comments

Comments
 (0)