This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-archetype.git
The following commit(s) were added to refs/heads/master by this push: new 96374eb3 [ARCHETYPE-574] Use default values in integration tests goal (#232) 96374eb3 is described below commit 96374eb3ea5b61f346f5291d6092159229caff9e Author: Giovanni van der Schelde <27761321+gio...@users.noreply.github.com> AuthorDate: Tue Oct 22 17:27:50 2024 +0200 [ARCHETYPE-574] Use default values in integration tests goal (#232) Co-authored-by: Slawomir Jaranowski <s.jaranow...@gmail.com> --- .../invoker.properties} | 11 +---- .../pom.xml | 57 ++++++++++++++++++++++ .../META-INF/maven/archetype-metadata.xml | 38 +++++++++++++++ .../src/main/resources/archetype-resources/pom.xml | 27 ++++++++++ .../src/main/java/SomeClass.java | 23 +++++++++ .../resources/projects/it1}/archetype.properties | 18 +++---- .../src/test/resources/projects/it1/goal.txt | 0 .../test.properties} | 17 +++---- .../resources/projects/basic/archetype.properties | 2 +- .../src/main/resources/test-basic.properties | 2 +- .../resources/projects/basic/archetype.properties | 2 +- .../src/main/resources/test-basic.properties | 2 +- .../maven/archetype/mojos/IntegrationTestMojo.java | 13 ++++- 13 files changed, 175 insertions(+), 37 deletions(-) diff --git a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/invoker.properties similarity index 68% copy from maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties copy to maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/invoker.properties index 01013f2d..e71f103f 100644 --- a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/invoker.properties @@ -15,13 +15,4 @@ # specific language governing permissions and limitations # under the License. -version=0.1-SNAPSHOT -groupId=archetype.it -artifactId=basic -package=build.archetype - -requiredPropertyWithoutDefaultValue=a value defined in archetype.properties - -requiredPropertyWithDefaultValue=not the default value, but a value defined in archetype.properties - -nonRequiredProperty=a property that is not defined as requiredProperty in the archetype descriptor \ No newline at end of file +invoker.goals = clean verify diff --git a/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/pom.xml b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/pom.xml new file mode 100644 index 00000000..a8b4d080 --- /dev/null +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/pom.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.example</groupId> + <artifactId>demo</artifactId> + <version>1.0-SNAPSHOT</version> + + <!-- Packaging type + build extension --> + <packaging>maven-archetype</packaging> + <build> + <plugins> + <plugin> + <artifactId>maven-archetype-plugin</artifactId> + <version>@project.version@</version> + <configuration> + <settingsFile>${basedir}/test-settings.xml</settingsFile> + <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> + <ignoreEOLStyle>true</ignoreEOLStyle> + <useDefaultExcludes>false</useDefaultExcludes> + <properties> + <maven.compiler.source>${maven.compiler.source}</maven.compiler.source> + <maven.compiler.target>${maven.compiler.target}</maven.compiler.target> + </properties> + </configuration> + </plugin> + </plugins> + <extensions> + <extension> + <groupId>org.apache.maven.archetype</groupId> + <artifactId>archetype-packaging</artifactId> + <version>@project.version@</version> + </extension> + </extensions> + </build> + +</project> diff --git a/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/META-INF/maven/archetype-metadata.xml b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/META-INF/maven/archetype-metadata.xml new file mode 100644 index 00000000..1dbb6122 --- /dev/null +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<archetype-descriptor xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" + name="demo-archetype" partial="false"> + + <requiredProperties> + <requiredProperty key="example-prop"> + <defaultValue>Hi</defaultValue> + </requiredProperty> + </requiredProperties> + + <fileSets> + <fileSet encoding="UTF-8" filtered="true" packaged="true"> + <directory>src/main/java</directory> + <includes> + <include>**/*.java</include> + </includes> + </fileSet> + </fileSets> +</archetype-descriptor> diff --git a/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/pom.xml b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..0d3672a2 --- /dev/null +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>${groupID}</groupId> + <artifactId>${artifactId}</artifactId> + <version>${version}}</version> + +</project> diff --git a/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/src/main/java/SomeClass.java b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/src/main/java/SomeClass.java new file mode 100644 index 00000000..89658aa0 --- /dev/null +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/main/resources/archetype-resources/src/main/java/SomeClass.java @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package ${groupId}; + +public class SomeClass { + String name; +} diff --git a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/test/resources/projects/it1/archetype.properties similarity index 68% copy from maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties copy to maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/test/resources/projects/it1/archetype.properties index 01013f2d..a4984635 100644 --- a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/test/resources/projects/it1/archetype.properties @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -15,13 +15,7 @@ # specific language governing permissions and limitations # under the License. -version=0.1-SNAPSHOT -groupId=archetype.it -artifactId=basic -package=build.archetype - -requiredPropertyWithoutDefaultValue=a value defined in archetype.properties - -requiredPropertyWithDefaultValue=not the default value, but a value defined in archetype.properties - -nonRequiredProperty=a property that is not defined as requiredProperty in the archetype descriptor \ No newline at end of file +artifactId=demo +groupId=com.example +version=1.0.0-SNAPSHOT +package=com.example diff --git a/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/test/resources/projects/it1/goal.txt b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/src/test/resources/projects/it1/goal.txt new file mode 100644 index 00000000..e69de29b diff --git a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/test.properties similarity index 68% copy from maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties copy to maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/test.properties index 01013f2d..ec37f16b 100644 --- a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties +++ b/maven-archetype-plugin/src/it/projects/ARCHETYPE-574_default-value-should-be-used-in-integration-test/test.properties @@ -15,13 +15,12 @@ # specific language governing permissions and limitations # under the License. -version=0.1-SNAPSHOT -groupId=archetype.it -artifactId=basic -package=build.archetype +archetypeGroupId=com.example +archetypeArtifactId=demo +archetypeVersion=1.0-SNAPSHOT +archetypeCatalog=local -requiredPropertyWithoutDefaultValue=a value defined in archetype.properties - -requiredPropertyWithDefaultValue=not the default value, but a value defined in archetype.properties - -nonRequiredProperty=a property that is not defined as requiredProperty in the archetype descriptor \ No newline at end of file +groupId=com.company +artifactId=project +version=1.0-SNAPSHOT +package=com.company.project diff --git a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties b/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties index 01013f2d..6e6ee8ad 100644 --- a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties +++ b/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/archetype.properties @@ -24,4 +24,4 @@ requiredPropertyWithoutDefaultValue=a value defined in archetype.properties requiredPropertyWithDefaultValue=not the default value, but a value defined in archetype.properties -nonRequiredProperty=a property that is not defined as requiredProperty in the archetype descriptor \ No newline at end of file +nonRequiredProperty = this is a property that should not be replaced diff --git a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties b/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties index bc7e8cde..75669cf1 100644 --- a/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties +++ b/maven-archetype-plugin/src/it/projects/build-archetype/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties @@ -24,4 +24,4 @@ requiredPropertyWithoutDefaultValue = a value defined in archetype.properties requiredPropertyWithDefaultValue = not the default value, but a value defined in archetype.properties -nonRequiredProperty = a property that is not defined as requiredProperty in the archetype descriptor +nonRequiredProperty = ${nonRequiredProperty} diff --git a/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/archetype.properties b/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/archetype.properties index 01013f2d..6e6ee8ad 100644 --- a/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/archetype.properties +++ b/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/archetype.properties @@ -24,4 +24,4 @@ requiredPropertyWithoutDefaultValue=a value defined in archetype.properties requiredPropertyWithDefaultValue=not the default value, but a value defined in archetype.properties -nonRequiredProperty=a property that is not defined as requiredProperty in the archetype descriptor \ No newline at end of file +nonRequiredProperty = this is a property that should not be replaced diff --git a/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties b/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties index bc7e8cde..75669cf1 100644 --- a/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties +++ b/maven-archetype-plugin/src/it/projects/build-ignore-eol/src/test/resources/projects/basic/reference/src/main/resources/test-basic.properties @@ -24,4 +24,4 @@ requiredPropertyWithoutDefaultValue = a value defined in archetype.properties requiredPropertyWithDefaultValue = not the default value, but a value defined in archetype.properties -nonRequiredProperty = a property that is not defined as requiredProperty in the archetype descriptor +nonRequiredProperty = ${nonRequiredProperty} diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java index e08d6a19..e96975c8 100644 --- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java +++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java @@ -46,6 +46,7 @@ import org.apache.maven.archetype.downloader.DownloadException; import org.apache.maven.archetype.downloader.Downloader; import org.apache.maven.archetype.exception.ArchetypeNotConfigured; import org.apache.maven.archetype.generator.ArchetypeGenerator; +import org.apache.maven.archetype.ui.generation.ArchetypeGenerationConfigurator; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -139,6 +140,9 @@ public class IntegrationTestMojo extends AbstractMojo { @Component private Invoker invoker; + @Component + private ArchetypeGenerationConfigurator archetypeGenerationConfigurator; + /** * The archetype project to execute the integration tests on. */ @@ -477,7 +481,7 @@ public class IntegrationTestMojo extends AbstractMojo { File archetypeFile, Properties properties, String basedir) - throws IntegrationTestFailure { + throws IntegrationTestFailure, MojoExecutionException { // @formatter:off ArchetypeGenerationRequest request = new ArchetypeGenerationRequest() .setArchetypeGroupId(archetypeGroupId) @@ -487,12 +491,17 @@ public class IntegrationTestMojo extends AbstractMojo { .setArtifactId(properties.getProperty(Constants.ARTIFACT_ID)) .setVersion(properties.getProperty(Constants.VERSION)) .setPackage(properties.getProperty(Constants.PACKAGE)) + .setRepositorySession(session.getRepositorySession()) .setOutputDirectory(basedir) .setProperties(properties); // @formatter:on ArchetypeGenerationResult result = new ArchetypeGenerationResult(); - + try { + archetypeGenerationConfigurator.configureArchetype(request, false, properties); + } catch (Exception e) { + throw new MojoExecutionException("Cannot configure archetype", e); + } archetypeGenerator.generateArchetype(request, archetypeFile, result); if (result.getCause() != null) {