This is an automated email from the ASF dual-hosted git repository. khmarbaise pushed a commit to branch MENFORCER-268-ci-friendly in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
commit 77830ccf45bf76d1a1ddbad31925cf7d048d74c9 Author: Karl Heinz Marbaise <[email protected]> AuthorDate: Mon Jan 1 12:20:19 2018 +0100 [MENFORCER-268] Usage of CI friendly version placeholders does not work o Changed the implementation to use the Maven 3 based reading instead of hand made reading of pom files. --- .../plugins/enforcer/RequireNoRepositories.java | 45 ++- .../enforcer/TestRequireNoRepositories.java | 326 +++++++++++++-------- .../invoker.properties | 18 ++ .../pom.xml | 70 +++++ .../verify.groovy | 22 ++ .../invoker.properties | 18 ++ .../require-no-repositories-allow-repo/pom.xml | 70 +++++ .../verify.groovy | 22 ++ .../it/projects/require-no-repositories/pom.xml | 1 + .../invoker.properties | 18 ++ .../pom.xml | 70 +++++ .../verify.groovy | 22 ++ .../invoker.properties | 18 ++ .../pom.xml | 114 +++---- .../verify.groovy | 22 ++ .../invoker.properties | 18 ++ .../pom.xml | 70 +++++ .../verify.groovy | 22 ++ .../child}/pom.xml | 34 +-- .../pom.xml | 5 + 20 files changed, 776 insertions(+), 229 deletions(-) diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java index cc5073d..9d7cbfc 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java +++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java @@ -19,23 +19,19 @@ package org.apache.maven.plugins.enforcer; * under the License. */ -import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Model; import org.apache.maven.model.Repository; -import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils; +import org.apache.maven.plugin.logging.Log; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; /** * This rule checks that this pom or its parents don't define a repository. @@ -117,20 +113,29 @@ public class RequireNoRepositories this.allowSnapshotPluginRepositories = allowSnapshotPluginRepositories; } + private Log logger; + @Override public void execute( EnforcerRuleHelper helper ) throws EnforcerRuleException { - EnforcerRuleUtils utils = new EnforcerRuleUtils( helper ); + logger = helper.getLog(); - MavenProject project; + MavenSession session; try { - project = (MavenProject) helper.evaluate( "${project}" ); + session = (MavenSession) helper.evaluate( "${session}" ); + + List<MavenProject> sortedProjects = session.getProjectDependencyGraph().getSortedProjects(); - List<Model> models = - utils.getModelsRecursively( project.getGroupId(), project.getArtifactId(), project.getVersion(), - new File( project.getBasedir(), "pom.xml" ) ); + List<Model> models = new ArrayList<Model>(); + for ( MavenProject mavenProject : sortedProjects ) + { + logger.debug( "Scanning project: " + mavenProject.getGroupId() + ":" + mavenProject.getArtifactId() + + " version:" + mavenProject.getVersion() ); + models.add( mavenProject.getOriginalModel() ); + } + List<Model> badModels = new ArrayList<Model>(); StringBuffer newMsg = new StringBuffer(); @@ -190,22 +195,6 @@ public class RequireNoRepositories { throw new EnforcerRuleException( e.getLocalizedMessage() ); } - catch ( ArtifactResolutionException e ) - { - throw new EnforcerRuleException( e.getLocalizedMessage() ); - } - catch ( ArtifactNotFoundException e ) - { - throw new EnforcerRuleException( e.getLocalizedMessage() ); - } - catch ( IOException e ) - { - throw new EnforcerRuleException( e.getLocalizedMessage() ); - } - catch ( XmlPullParserException e ) - { - throw new EnforcerRuleException( e.getLocalizedMessage() ); - } } /** diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java index 9b6ac8b..c8b4cb7 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java +++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java @@ -1,5 +1,10 @@ package org.apache.maven.plugins.enforcer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -20,236 +25,321 @@ package org.apache.maven.plugins.enforcer; */ import java.util.Collections; +import java.util.List; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.codehaus.plexus.PlexusTestCase; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.execution.ProjectDependencyGraph; +import org.apache.maven.model.Model; +import org.apache.maven.model.Repository; +import org.apache.maven.model.RepositoryPolicy; +import org.apache.maven.plugin.logging.Log; +import org.apache.maven.project.MavenProject; +import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; +import org.junit.Before; +import org.junit.Test; /** * Test the "require no repositories" rule. * * @author <a href="mailto:[email protected]">Brett Porter</a> + * @author <a href="mailto:[email protected]">Karl Heinz Marbaise</a> */ public class TestRequireNoRepositories - extends PlexusTestCase { private EnforcerRuleHelper helper; private RequireNoRepositories rule; - private MockProject project; + private MavenSession session; - public void setUp() - throws Exception + @Before + public void before() + throws ExpressionEvaluationException { - super.setUp(); + session = mock( MavenSession.class ); + helper = mock( EnforcerRuleHelper.class ); + + when( helper.evaluate( "${session}" ) ).thenReturn( session ); + + Log log = mock( Log.class ); + when( helper.getLog() ).thenReturn( log ); rule = new RequireNoRepositories(); rule.setMessage( "my message" ); + } - project = new MockProject(); - project.setGroupId( "org.apache.maven.plugins.enforcer.test" ); - project.setVersion( "1.0-SNAPSHOT" ); + private MavenProject createMavenProject() + { + MavenProject mp = mock( MavenProject.class ); + when( mp.getGroupId() ).thenReturn( "org.apache.maven.plugins.enforcer.test" ); + when( mp.getArtifactId() ).thenReturn( "no-repositories-child" ); + when( mp.getVersion() ).thenReturn( "1.0-SNAPSHOT" ); - helper = EnforcerTestUtils.getHelper( project ); + return mp; } - public void testAllBannedNoRepositories() - throws EnforcerRuleException + private Model createOriginalModel() { - project.setArtifactId( "no-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/no-repositories/child" ) ); + Model m = mock( Model.class ); + when( m.getGroupId() ).thenReturn( "org.apache.maven.plugins.enforcer.test" ); + when( m.getArtifactId() ).thenReturn( "no-repositories" ); + when( m.getVersion() ).thenReturn( "1.0-SNAPSHOT" ); + return m; + } - rule.execute( helper ); + private MavenProject createStandAloneProject() + { + MavenProject mp = createMavenProject(); + Model originalModel = createOriginalModel(); + // This means the interpolated model is the same + // as the non interpolated. + when( mp.getModel() ).thenReturn( originalModel ); + when( mp.getOriginalModel() ).thenReturn( originalModel ); + return mp; } - public void testAllBannedWithRepositories() - throws EnforcerRuleException + private void setupSortedProjects( List<MavenProject> projectList ) { - project.setArtifactId( "with-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-repositories/child" ) ); + ProjectDependencyGraph pdg = mock( ProjectDependencyGraph.class ); + when( session.getProjectDependencyGraph() ).thenReturn( pdg ); + when( pdg.getSortedProjects() ).thenReturn( projectList ); + } - try - { - rule.execute( helper ); - fail( "Should have exception" ); - } - catch ( EnforcerRuleException e ) - { - assertTrue( true ); - } + private Repository createRepository( String id, String url ) + { + Repository r = new Repository(); + r.setId( id ); + r.setUrl( url ); + RepositoryPolicy snapshotPolicy = new RepositoryPolicy(); + snapshotPolicy.setEnabled( false ); + snapshotPolicy.setUpdatePolicy( "daily" ); + r.setSnapshots( snapshotPolicy ); + + RepositoryPolicy releasePolicy = new RepositoryPolicy(); + releasePolicy.setEnabled( true ); + releasePolicy.setUpdatePolicy( "never" ); + r.setReleases( releasePolicy ); + + return r; } - public void testAllBannedWithAllowedRepositories() - throws EnforcerRuleException + private Repository createSnapshotRepository( String id, String url ) { - rule.setAllowedRepositories( Collections.singletonList( "repo" ) ); + Repository r = new Repository(); + r.setId( id ); + r.setUrl( url ); - project.setArtifactId( "with-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-repositories/child" ) ); + RepositoryPolicy snapshotPolicy = new RepositoryPolicy(); + snapshotPolicy.setEnabled( true ); + snapshotPolicy.setUpdatePolicy( "daily" ); + r.setSnapshots( snapshotPolicy ); - rule.execute( helper ); + RepositoryPolicy releasePolicy = new RepositoryPolicy(); + releasePolicy.setEnabled( false ); + r.setReleases( releasePolicy ); + + return r; } - public void testAllBannedWithAllowedPluginRepositories() + private MavenProject addRepository( MavenProject project, Repository r ) + { + Model originalModel = project.getOriginalModel(); + List<Repository> repositories = new ArrayList<Repository>(); + repositories.add( r ); + when( originalModel.getRepositories() ).thenReturn( repositories ); + return project; + } + + private MavenProject addPluginRepository( MavenProject project, Repository r ) + { + Model originalModel = project.getOriginalModel(); + List<Repository> repositories = new ArrayList<Repository>(); + repositories.add( r ); + when( originalModel.getPluginRepositories() ).thenReturn( repositories ); + return project; + } + + /** + * This model contains a single module maven project without any repository. + */ + @Test + public void testAllBannedNoRepositories() throws EnforcerRuleException { - rule.setAllowedPluginRepositories( Collections.singletonList( "repo" ) ); + MavenProject baseProject = createStandAloneProject(); + setupSortedProjects( Collections.singletonList( baseProject ) ); + + rule.execute( helper ); + } - project.setArtifactId( "with-plugin-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-plugin-repositories/child" ) ); + /** + * The model contains a single repository which is is not allowed by the default rules. + */ + @Test( expected = EnforcerRuleException.class ) + public void testAllBannedWithRepository() + throws EnforcerRuleException + { + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createRepository( "repo", "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testReposNotBannedNoRepositories() + /** + * The model contains a single repository which is allowed by setting allowedRepositories to the id. + */ + @Test + public void testAllBannedWithAllowedRepositories() throws EnforcerRuleException { - rule.setBanRepositories( false ); + final String repositoryId = "repo"; + rule.setAllowedRepositories( Collections.singletonList( repositoryId ) ); - project.setArtifactId( "no-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/no-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testReposNotBannedWithRepositories() + /** + * The model contains a single repository. Turned off ban repositories. + */ + @Test + public void testRepositoriesNotBannedWithSingleRepository() throws EnforcerRuleException { + final String repositoryId = "repo"; + rule.setBanRepositories( false ); - project.setArtifactId( "with-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testReposNotBannedWithPluginRepositories() + /** + * The model contains no repository at all. Turned off ban repositories. + */ + @Test + public void testRepositoriesNotBannedWithOutAnyRepository() throws EnforcerRuleException { rule.setBanRepositories( false ); - project.setArtifactId( "with-plugin-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-plugin-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + setupSortedProjects( Collections.singletonList( baseProject ) ); - try - { - rule.execute( helper ); - fail( "Should have exception" ); - } - catch ( EnforcerRuleException e ) - { - assertTrue( true ); - } + rule.execute( helper ); } - public void testPluginReposNotBannedNoRepositories() + /** + * This model contains a single plugin repository. The given plugin repository is added to the list of allowed + * plugin repositories. + */ + @Test + public void testAllBannedWithAllowedPluginRepositories() throws EnforcerRuleException { - rule.setBanPluginRepositories( false ); + final String repositoryId = "repo"; + rule.setAllowedPluginRepositories( Collections.singletonList( repositoryId ) ); - project.setArtifactId( "no-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/no-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addPluginRepository( baseProject, createRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testPluginReposNotBannedWithRepositories() + /** + * The model contains a single plugin repository. Turned off ban plugin repositories. + */ + @Test + public void testPluginRepositoriesNotBannedWithSinglePluginRepository() throws EnforcerRuleException { + final String repositoryId = "repo"; + rule.setBanPluginRepositories( false ); - project.setArtifactId( "with-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addPluginRepository( baseProject, createRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); - try - { - rule.execute( helper ); - fail( "Should have exception" ); - } - catch ( EnforcerRuleException e ) - { - assertTrue( true ); - } + rule.execute( helper ); } - public void testPluginReposNotBannedWithPluginRepositories() + /** + * The model contains no repository at all. Turned off ban plugin repositories. + */ + @Test + public void testPluginRepositoriesNotBannedWithOutAnyRepository() throws EnforcerRuleException { rule.setBanPluginRepositories( false ); - project.setArtifactId( "with-plugin-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/with-plugin-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testReposNotAllowedWithSnapshotRepositories() + @Test( expected = EnforcerRuleException.class ) + public void testAllBannedWithSnapshotRepository() throws EnforcerRuleException { - rule.setAllowSnapshotRepositories( true ); + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createSnapshotRepository( "repo", "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); - project.setArtifactId( "snapshot-plugin-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-plugin-repositories/child" ) ); - - try - { - rule.execute( helper ); - fail( "Should have exception" ); - } - catch ( EnforcerRuleException e ) - { - assertTrue( true ); - } + rule.execute( helper ); } - public void testReposAllowedWithSnapshotRepositories() + @Test + public void testAllBannedWithSnapshotRepositoryAllowedRepositories() throws EnforcerRuleException { - rule.setAllowSnapshotRepositories( true ); + final String repositoryId = "repo"; + rule.setAllowedRepositories( Collections.singletonList( repositoryId ) ); - project.setArtifactId( "snapshot-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createSnapshotRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - public void testPluginReposNotAllowedWithSnapshotRepositories() + @Test + public void testAllBannedWithSnapshotRepositoryAndSetAllowSnapshotRepositories() throws EnforcerRuleException { - rule.setAllowSnapshotPluginRepositories( true ); + final String repositoryId = "repo"; + rule.setAllowSnapshotRepositories( true ); - project.setArtifactId( "snapshot-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addRepository( baseProject, createSnapshotRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); - try - { - rule.execute( helper ); - fail( "Should have exception" ); - } - catch ( EnforcerRuleException e ) - { - assertTrue( true ); - } + rule.execute( helper ); } - public void testPluginReposAllowedWithSnapshotPluginRepositories() + @Test + public void testAllBannedWithSnapshotPluginRepositoryAndSetAllowSnapshotPluginRepositories() throws EnforcerRuleException { + final String repositoryId = "repo"; rule.setAllowSnapshotPluginRepositories( true ); - project.setArtifactId( "snapshot-plugin-repositories-child" ); - project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-plugin-repositories/child" ) ); + MavenProject baseProject = createStandAloneProject(); + addPluginRepository( baseProject, createSnapshotRepository( repositoryId, "http://example.com/repo" ) ); + setupSortedProjects( Collections.singletonList( baseProject ) ); rule.execute( helper ); } - /** - * Test id. - */ - public void testId() - { - RequireNoRepositories rule = new RequireNoRepositories(); - rule.getCacheId(); - } } diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/invoker.properties new file mode 100644 index 0000000..c98ac4c --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.buildResult=failure \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/pom.xml new file mode 100644 index 0000000..ba8a6a7 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/pom.xml @@ -0,0 +1,70 @@ +<?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> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + + <description>This IT makes sure to prevent having pluginRepositories inside the pom.</description> + + <pluginRepositories> + <pluginRepository> + <id>plugin-repo</id> + <url>http://example.com/repo</url> + </pluginRepository> + </pluginRepositories> + <repositories> + <repository> + <id>com.asual.maven.public</id> + <name>Asual Public Repository</name> + <url>http://localhost</url> + </repository> + </repositories> + + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>@project.version@</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireNoRepositories> + <allowedPluginRepositories>plugin-repo</allowedPluginRepositories> + </requireNoRepositories> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/verify.groovy new file mode 100644 index 0000000..c065765 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-plugin-repo/verify.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ +File buildLog = new File( basedir, 'build.log' ) +assert buildLog.text.contains( '[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:' ) +assert buildLog.text.contains( 'Some poms have repositories defined:' ) +assert buildLog.text.contains( 'org.apache.maven.its.enforcer:test version:1.0 has repositories [com.asual.maven.public]' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/invoker.properties new file mode 100644 index 0000000..c98ac4c --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.buildResult=failure \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/pom.xml new file mode 100644 index 0000000..c0af0cc --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/pom.xml @@ -0,0 +1,70 @@ +<?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> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + + <description>This IT makes sure to prevent having pluginRepositories inside the pom.</description> + + <pluginRepositories> + <pluginRepository> + <id>plugin-repo</id> + <url>http://example.com/repo</url> + </pluginRepository> + </pluginRepositories> + <repositories> + <repository> + <id>com.asual.maven.public</id> + <name>Asual Public Repository</name> + <url>http://localhost</url> + </repository> + </repositories> + + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>@project.version@</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireNoRepositories> + <allowedRepositories>com.asual.maven.public</allowedRepositories> + </requireNoRepositories> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/verify.groovy new file mode 100644 index 0000000..b9538f3 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories-allow-repo/verify.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ +File buildLog = new File( basedir, 'build.log' ) +assert buildLog.text.contains( '[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:' ) +assert buildLog.text.contains( 'Some poms have repositories defined:' ) +assert buildLog.text.contains( 'org.apache.maven.its.enforcer:test version:1.0 has plugin repositories [plugin-repo]' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml index c66de18..bf5d7f9 100644 --- a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml @@ -27,6 +27,7 @@ under the License. <version>1.0</version> <description> + This IT demonstrates having no repositories defined at all. </description> <build> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/invoker.properties new file mode 100644 index 0000000..c98ac4c --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.buildResult=failure \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/pom.xml new file mode 100644 index 0000000..4951265 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/pom.xml @@ -0,0 +1,70 @@ +<?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> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + + <description>This IT makes sure to prevent having defined pluginRepository and repository in allowedPluginRepositories</description> + + <pluginRepositories> + <pluginRepository> + <id>plugin-repo</id> + <url>http://example.com/repo</url> + </pluginRepository> + </pluginRepositories> + <repositories> + <repository> + <id>com.asual.maven.public</id> + <name>Asual Public Repository</name> + <url>http://localhost</url> + </repository> + </repositories> + + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>@project.version@</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireNoRepositories> + <allowedPluginRepositories>plugin-repo,com.asual.maven.public</allowedPluginRepositories> + </requireNoRepositories> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/verify.groovy new file mode 100644 index 0000000..c065765 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_allowed-plugin-repo/verify.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ +File buildLog = new File( basedir, 'build.log' ) +assert buildLog.text.contains( '[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:' ) +assert buildLog.text.contains( 'Some poms have repositories defined:' ) +assert buildLog.text.contains( 'org.apache.maven.its.enforcer:test version:1.0 has repositories [com.asual.maven.public]' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/invoker.properties new file mode 100644 index 0000000..c98ac4c --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.buildResult=failure \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/pom.xml similarity index 88% copy from maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml copy to maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/pom.xml index c66de18..0ceb88b 100644 --- a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/pom.xml @@ -1,55 +1,59 @@ -<?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> - <modelVersion>4.0.0</modelVersion> - - <groupId>org.apache.maven.its.enforcer</groupId> - <artifactId>test</artifactId> - <version>1.0</version> - - <description> - </description> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <version>@project.version@</version> - <executions> - <execution> - <id>test</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireNoRepositories> - </requireNoRepositories> - </rules> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> +<?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> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + + <pluginRepositories> + <pluginRepository> + <id>repo</id> + <url>http://example.com/repo</url> + </pluginRepository> + </pluginRepositories> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>@project.version@</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireNoRepositories> + </requireNoRepositories> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/verify.groovy new file mode 100644 index 0000000..b3c2b46 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_plugin-repositories/verify.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ +File buildLog = new File( basedir, 'build.log' ) +assert buildLog.text.contains( '[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:' ) +assert buildLog.text.contains( 'Some poms have repositories defined:' ) +assert buildLog.text.contains( 'org.apache.maven.its.enforcer:test version:1.0 has plugin repositories [repo]' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/invoker.properties new file mode 100644 index 0000000..c98ac4c --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.buildResult=failure \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/pom.xml new file mode 100644 index 0000000..ba8a6a7 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/pom.xml @@ -0,0 +1,70 @@ +<?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> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + + <description>This IT makes sure to prevent having pluginRepositories inside the pom.</description> + + <pluginRepositories> + <pluginRepository> + <id>plugin-repo</id> + <url>http://example.com/repo</url> + </pluginRepository> + </pluginRepositories> + <repositories> + <repository> + <id>com.asual.maven.public</id> + <name>Asual Public Repository</name> + <url>http://localhost</url> + </repository> + </repositories> + + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>@project.version@</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireNoRepositories> + <allowedPluginRepositories>plugin-repo</allowedPluginRepositories> + </requireNoRepositories> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/verify.groovy new file mode 100644 index 0000000..c065765 --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_failure_repositories/verify.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ +File buildLog = new File( basedir, 'build.log' ) +assert buildLog.text.contains( '[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:' ) +assert buildLog.text.contains( 'Some poms have repositories defined:' ) +assert buildLog.text.contains( 'org.apache.maven.its.enforcer:test version:1.0 has repositories [com.asual.maven.public]' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/child/pom.xml similarity index 53% copy from maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml copy to maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/child/pom.xml index c66de18..b9c3410 100644 --- a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/child/pom.xml @@ -22,34 +22,12 @@ under the License. <project> <modelVersion>4.0.0</modelVersion> - <groupId>org.apache.maven.its.enforcer</groupId> - <artifactId>test</artifactId> - <version>1.0</version> + <parent> + <groupId>org.apache.maven.its.enforcer</groupId> + <artifactId>test</artifactId> + <version>1.0</version> + </parent> - <description> - </description> + <artifactId>child</artifactId> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <version>@project.version@</version> - <executions> - <execution> - <id>test</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireNoRepositories> - </requireNoRepositories> - </rules> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> </project> diff --git a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml b/maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/pom.xml similarity index 91% copy from maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml copy to maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/pom.xml index c66de18..e2651ac 100644 --- a/maven-enforcer-plugin/src/it/projects/require-no-repositories/pom.xml +++ b/maven-enforcer-plugin/src/it/projects/require-no-repositories_mm/pom.xml @@ -25,8 +25,13 @@ under the License. <groupId>org.apache.maven.its.enforcer</groupId> <artifactId>test</artifactId> <version>1.0</version> + <packaging>pom</packaging> + <modules> + <module>child</module> + </modules> <description> + This IT demonstrates having no repositories defined at all. </description> <build> -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
