Skip to content

Commit

Permalink
Align documentation and tests on feature preview API
Browse files Browse the repository at this point in the history
  • Loading branch information
ljacomet committed Feb 13, 2018
1 parent 6ea8939 commit a5dd28d
Show file tree
Hide file tree
Showing 17 changed files with 52 additions and 45 deletions.
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
org.gradle.jvmargs=-Xmx2g -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
# TODO Remove the following once it has moved to settings.gradle.kts
org.gradle.advancedpomsupport=true
3 changes: 3 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ apply {
from("gradle/remoteHttpCacheSettings.gradle")
}

// TODO enable this once a Gradle build exists with the support for it
// enableFeaturePreview("IMPROVED_POM_SUPPORT")

include("distributionsDependencies")
include("distributions")
include("baseServices")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ import spock.lang.Unroll
class ClientModuleDependenciesResolveIntegrationTest extends AbstractHttpDependencyResolutionTest {

@Unroll
def "uses metadata from Client Module and looks up artifact in declared repositories (advancedPomSupport = #advancedPomSupport)"() {
def "uses metadata from Client Module and looks up artifact in declared repositories (improvedPomSupport = #improvedPomSupport)"() {
given:
if (advancedPomSupport) {
if (improvedPomSupport) {
FeaturePreviewsFixture.enableImprovedPomSupport(settingsFile)
}
def repo1 = ivyHttpRepo("repo1")
Expand Down Expand Up @@ -70,13 +70,13 @@ task listJars {
succeeds('listJars')
where:
advancedPomSupport << [false, true]
improvedPomSupport << [false, true]
}
@Unroll
def "can resolve nested Client Module (advancedPomSupport = #advancedPomSupport)"() {
def "can resolve nested Client Module (improvedPomSupport = #improvedPomSupport)"() {
given:
if (advancedPomSupport) {
if (improvedPomSupport) {
FeaturePreviewsFixture.enableImprovedPomSupport(settingsFile)
}
def repo = mavenHttpRepo("repo")
Expand Down Expand Up @@ -122,13 +122,13 @@ task listJars {
succeeds('listJars')
where:
advancedPomSupport << [false, true]
improvedPomSupport << [false, true]
}
@Unroll
def "client module dependency ignores published artifact listing and resolves single jar file (advancedPomSupport = #advancedPomSupport)"() {
def "client module dependency ignores published artifact listing and resolves single jar file (improvedPomSupport = #improvedPomSupport)"() {
given:
if (advancedPomSupport) {
if (improvedPomSupport) {
FeaturePreviewsFixture.enableImprovedPomSupport(settingsFile)
}
def projectA = ivyHttpRepo.module('group', 'projectA', '1.2')
Expand Down Expand Up @@ -181,6 +181,6 @@ task listClientModuleJars {
succeeds('listClientModuleJars')
where:
advancedPomSupport << [false, true]
improvedPomSupport << [false, true]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class PublishedDependencyConstraintsIntegrationTest extends AbstractModuleDepend
void "dependency constraint is ignored when feature is not enabled"() {
given:
// Do not enable feature
propertiesFile.text = ''
settingsFile.text = "rootProject.name = '$rootProjectName'"

repository {
'org:foo:1.0'()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class DefaultMavenModuleResolveMetadata extends AbstractModuleComponentRe
// We need to work with the 'String' version of the usage attribute, since this is expected for all providers by the `PreferJavaRuntimeVariant` schema
private static final Attribute<String> USAGE_ATTRIBUTE = Attribute.of(Usage.USAGE_ATTRIBUTE.getName(), String.class);

private final boolean advancedPomSupportEnabled;
private final boolean improvedPomSupportEnabled;
private final ImmutableAttributesFactory attributesFactory;
private final NamedObjectInstantiator objectInstantiator;

Expand All @@ -57,9 +57,9 @@ public class DefaultMavenModuleResolveMetadata extends AbstractModuleComponentRe

private ImmutableList<? extends ConfigurationMetadata> derivedVariants;

DefaultMavenModuleResolveMetadata(DefaultMutableMavenModuleResolveMetadata metadata, ImmutableAttributesFactory attributesFactory, NamedObjectInstantiator objectInstantiator, boolean advancedPomSupportEnabled) {
DefaultMavenModuleResolveMetadata(DefaultMutableMavenModuleResolveMetadata metadata, ImmutableAttributesFactory attributesFactory, NamedObjectInstantiator objectInstantiator, boolean improvedPomSupportEnabled) {
super(metadata);
this.advancedPomSupportEnabled = advancedPomSupportEnabled;
this.improvedPomSupportEnabled = improvedPomSupportEnabled;
this.attributesFactory = attributesFactory;
this.objectInstantiator = objectInstantiator;
packaging = metadata.getPackaging();
Expand All @@ -70,7 +70,7 @@ public class DefaultMavenModuleResolveMetadata extends AbstractModuleComponentRe

private DefaultMavenModuleResolveMetadata(DefaultMavenModuleResolveMetadata metadata, ModuleSource source) {
super(metadata, source);
this.advancedPomSupportEnabled = metadata.advancedPomSupportEnabled;
this.improvedPomSupportEnabled = metadata.improvedPomSupportEnabled;
this.attributesFactory = metadata.attributesFactory;
this.objectInstantiator = metadata.objectInstantiator;
packaging = metadata.packaging;
Expand Down Expand Up @@ -152,7 +152,7 @@ private boolean include(MavenDependencyDescriptor dependency, Collection<String>
}

private boolean ignoreOptionalDependencies() {
return !advancedPomSupportEnabled;
return !improvedPomSupportEnabled;
}

@Override
Expand All @@ -162,7 +162,7 @@ public DefaultMavenModuleResolveMetadata withSource(ModuleSource source) {

@Override
public MutableMavenModuleResolveMetadata asMutable() {
return new DefaultMutableMavenModuleResolveMetadata(this, attributesFactory, objectInstantiator, advancedPomSupportEnabled);
return new DefaultMutableMavenModuleResolveMetadata(this, attributesFactory, objectInstantiator, improvedPomSupportEnabled);
}

public String getPackaging() {
Expand All @@ -182,7 +182,7 @@ public boolean isKnownJarPackaging() {
}

private boolean isJavaLibrary() {
return advancedPomSupportEnabled && (isKnownJarPackaging() || isPomPackaging());
return improvedPomSupportEnabled && (isKnownJarPackaging() || isPomPackaging());
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class DefaultMutableMavenModuleResolveMetadata extends AbstractMutableMod

private final ImmutableAttributesFactory attributesFactory;
private final NamedObjectInstantiator objectInstantiator;
private final boolean advancedPomSupportEnabled;
private final boolean improvedPomSupportEnabled;

private String packaging = "jar";
private boolean relocated;
Expand All @@ -44,30 +44,30 @@ public class DefaultMutableMavenModuleResolveMetadata extends AbstractMutableMod

public DefaultMutableMavenModuleResolveMetadata(ModuleVersionIdentifier id, ModuleComponentIdentifier componentIdentifier, Collection<MavenDependencyDescriptor> dependencies,
ImmutableAttributesFactory attributesFactory, NamedObjectInstantiator objectInstantiator,
boolean advancedPomSupportEnabled) {
boolean improvedPomSupportEnabled) {
super(attributesFactory, id, componentIdentifier);
this.dependencies = ImmutableList.copyOf(dependencies);
this.attributesFactory = attributesFactory;
this.objectInstantiator = objectInstantiator;
this.advancedPomSupportEnabled = advancedPomSupportEnabled;
this.improvedPomSupportEnabled = improvedPomSupportEnabled;
}

DefaultMutableMavenModuleResolveMetadata(MavenModuleResolveMetadata metadata,
ImmutableAttributesFactory attributesFactory, NamedObjectInstantiator objectInstantiator,
boolean advancedPomSupportEnabled) {
boolean improvedPomSupportEnabled) {
super(metadata);
this.packaging = metadata.getPackaging();
this.relocated = metadata.isRelocated();
this.snapshotTimestamp = metadata.getSnapshotTimestamp();
this.dependencies = metadata.getDependencies();
this.attributesFactory = attributesFactory;
this.objectInstantiator = objectInstantiator;
this.advancedPomSupportEnabled = advancedPomSupportEnabled;
this.improvedPomSupportEnabled = improvedPomSupportEnabled;
}

@Override
public MavenModuleResolveMetadata asImmutable() {
return new DefaultMavenModuleResolveMetadata(this, attributesFactory, objectInstantiator, advancedPomSupportEnabled);
return new DefaultMavenModuleResolveMetadata(this, attributesFactory, objectInstantiator, improvedPomSupportEnabled);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@ class DefaultMavenModuleResolveMetadataTest extends AbstractModuleComponentResol
}

@Unroll
def "recognises java library for packaging=#packaging and advancedPomSupport=#advancedPomSupport"() {
def "recognises java library for packaging=#packaging and improvedPomSupport=#improvedPomSupport"() {
given:
def stringUsageAttribute = Attribute.of(Usage.USAGE_ATTRIBUTE.getName(), String.class)
def metadata = new DefaultMutableMavenModuleResolveMetadata(Mock(ModuleVersionIdentifier), id, [], TestUtil.attributesFactory(), TestUtil.objectInstantiator(), advancedPomSupport)
def metadata = new DefaultMutableMavenModuleResolveMetadata(Mock(ModuleVersionIdentifier), id, [], TestUtil.attributesFactory(), TestUtil.objectInstantiator(), improvedPomSupport)
metadata.packaging = packaging

when:
Expand All @@ -157,7 +157,7 @@ class DefaultMavenModuleResolveMetadataTest extends AbstractModuleComponentResol
}

where:
packaging | advancedPomSupport | isJavaLibrary
packaging | improvedPomSupport | isJavaLibrary
"pom" | false | false
"jar" | false | false
"maven-plugin" | false | false
Expand Down
6 changes: 3 additions & 3 deletions subprojects/docs/src/docs/release/notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Note that JUnit 5 requires Java 8 or higher.

Gradle now creates a dependency constraint for each dependency declaration in a POM file with `<optional>true</optional>`. This constraint will produce the expected result for an optional dependency: if the dependency module is brought in by another, non-optional dependency declaration, then the constraint will apply when choosing the version for that dependency (e.g., if the optional dependency defines a higher version, that one is chosen).

_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by setting `org.gradle.advancedpomsupport=true` in _gradle.properties_.
_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.

### BOM import

Expand All @@ -114,7 +114,7 @@ Gradle now [provides support](userguide/managing_transitive_dependencies.html#se

Here, for example, the versions of `gson` and `dom4j` are provided by the Spring Boot BOM.

_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by setting `org.gradle.advancedpomsupport=true` in _gradle.properties_.
_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.

### Compile/runtime scope separation in POM consumption

Expand All @@ -125,7 +125,7 @@ Since Gradle 1.0, `runtime` scoped dependencies have been included in the Java c

Now, if this new behavior is turned on, the Java and Java Library plugins both honor the separation of compile and runtime scopes. Meaning that the compile classpath only includes `compile` scoped dependencies, while the runtime classpath adds the `runtime` scoped dependencies as well. This is in particular useful if you develop and publish Java libraries with Gradle where the api/implementation dependencies separation is reflected in the published scopes.

_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by setting `org.gradle.advancedpomsupport=true` in _gradle.properties_.
_Note:_ This is a _Gradle 5.0 feature preview_, which means it is a potentially breaking change that will be activated by default in Gradle 5.0. It can be turned on in Gradle 4.6+ by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.

<!--
### Example new and noteworthy
Expand Down
2 changes: 1 addition & 1 deletion subprojects/docs/src/docs/userguide/javaLibraryPlugin.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ This often does not have an effect on modules published with Maven, where the PO

[NOTE]
====
Separating compile and runtime scope of modules is active by default in Gradle 5.0+. In Gradle 4.6+, you need to activate it by setting `org.gradle.advancedpomsupport=true` in gradle.properties.
Separating compile and runtime scope of modules is active by default in Gradle 5.0+. In Gradle 4.6+, you need to activate it by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.
====

[[sec:java_library_recognizing_dependencies]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Dependency constraints themselves can also be added transitively. If a modules's

[NOTE]
====
Support for _optional dependencies_ from pom files is active by default with Gradle 5.0+. For using it in Gradle 4.6+, you need to activate it by setting `org.gradle.advancedpomsupport=true` in gradle.properties.
Support for _optional dependencies_ from pom files is active by default with Gradle 5.0+. For using it in Gradle 4.6+, you need to activate it by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.
====

[[sec:excluding_transitive_module_dependencies]]
Expand Down Expand Up @@ -165,5 +165,5 @@ Gradle treats all entries in the `<dependencyManagement>` block of a BOM similar

[NOTE]
====
Importing dependency constraints from Maven BOMs is active by default with Gradle 5.0+. For using it in Gradle 4.6+, you need to activate it by setting `org.gradle.advancedpomsupport=true` in gradle.properties.
Importing dependency constraints from Maven BOMs is active by default with Gradle 5.0+. For using it in Gradle 4.6+, you need to activate it by adding `enableFeaturePreview('IMPROVED_POM_SUPPORT')` in _settings.gradle_.
====

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
rootProject.name = 'dependency-reason'

enableFeaturePreview('IMPROVED_POM_SUPPORT')

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
rootProject.name = 'dependency-on-bom'

enableFeaturePreview('IMPROVED_POM_SUPPORT')
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package org.gradle.test.fixtures
import groovy.transform.CompileStatic
import groovy.transform.SelfType
import org.gradle.integtests.fixtures.AbstractIntegrationSpec
import org.gradle.integtests.fixtures.FeaturePreviewsFixture
import org.gradle.test.fixtures.ivy.IvyModule
import org.gradle.test.fixtures.maven.MavenModule

Expand All @@ -32,7 +33,7 @@ trait GradleMetadataAwarePublishingSpec {
void prepare() {
executer.beforeExecute {
if (publishModuleMetadata) {
withArgument("-Dorg.gradle.gradlemetadata=true")
FeaturePreviewsFixture.enableGradleMetadata(settingsFile)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,39 +24,39 @@ import org.junit.experimental.categories.Category
class GradleFeaturePreviewsPerformanceTest extends AbstractCrossBuildPerformanceTest {
private final static EXCLUDE_RULE_MERGING_TEST_PROJECT = 'excludeRuleMergingBuild'

def "resolveDependencies on exclude merging project with advanced pom support"() {
def "resolveDependencies on exclude merging project with improved pom support"() {
def memory = '1g'

when:
runner.testGroup = "feature previews"
runner.buildSpec {
projectName(EXCLUDE_RULE_MERGING_TEST_PROJECT).displayName("advanced-pom-support").invocation {
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=true").gradleOpts("-Xms${memory}", "-Xmx${memory}")
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=true", '-PimprovedPomSupport=true').gradleOpts("-Xms${memory}", "-Xmx${memory}")
}
}
runner.baseline {
projectName(EXCLUDE_RULE_MERGING_TEST_PROJECT).displayName("no-advanced-pom-support").invocation {
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=false").gradleOpts("-Xms${memory}", "-Xmx${memory}")
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=false", '-PimprovedPomSupport=false').gradleOpts("-Xms${memory}", "-Xmx${memory}")
}
}

then:
runner.run()
}

def "resolveDependencies on large number of dependencies with advanced pom support"() {
def "resolveDependencies on large number of dependencies with improved pom support"() {
def memory = '1g'

when:
runner.testGroup = "feature previews"
runner.buildSpec {
projectName(EXCLUDE_RULE_MERGING_TEST_PROJECT).displayName("advanced-pom-support").invocation {
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=true", '-PnoExcludes').gradleOpts("-Xms${memory}", "-Xmx${memory}")
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=true", '-PimprovedPomSupport=true', '-PnoExcludes').gradleOpts("-Xms${memory}", "-Xmx${memory}")
}
}
runner.baseline {
projectName(EXCLUDE_RULE_MERGING_TEST_PROJECT).displayName("no-advanced-pom-support").invocation {
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=false", '-PnoExcludes').gradleOpts("-Xms${memory}", "-Xmx${memory}")
tasksToRun("resolveDependencies").args("-Dorg.gradle.advancedpomsupport=false", '-PimprovedPomSupport=false', '-PnoExcludes').gradleOpts("-Xms${memory}", "-Xmx${memory}")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class LargeDependencyGraphPerformanceTest extends AbstractCrossVersionPerformanc
}

@Unroll
def "resolve large dependency graph (advanced pom support = #advancedPomSupport, parallel = #parallel)"() {
def "resolve large dependency graph (improvedPomSupport = #improvedPomSupport, parallel = #parallel)"() {
runner.testProject = TEST_PROJECT_NAME
startServer()
Expand All @@ -59,8 +59,8 @@ class LargeDependencyGraphPerformanceTest extends AbstractCrossVersionPerformanc
if (parallel) {
runner.args += '--parallel'
}
if (advancedPomSupport) {
runner.args += '-Porg.gradle.advancedpomsupport=true'
if (improvedPomSupport) {
runner.args += '-Porg.gradle.advancedpomsupport=true -PimprovedPomSupport=true'
}
when:
Expand All @@ -73,7 +73,7 @@ class LargeDependencyGraphPerformanceTest extends AbstractCrossVersionPerformanc
stopServer()
where:
parallel | advancedPomSupport
parallel | improvedPomSupport
true | true
true | false
false | true
Expand Down

0 comments on commit a5dd28d

Please sign in to comment.