Compare commits

...

29 Commits

Author SHA1 Message Date
Stephen Connolly 7fcab60985 Update 'Jenkinsfile'
stephenc2/maven-plugin-tools/master There was a failure building this commit Details
stephenc/maven-plugin-tools/master There was a failure building this commit Details
2017-10-27 16:25:15 +00:00
Stephen Connolly d682b25820 Add a Jenkinsfile
stephenc/maven-plugin-tools/master This commit looks good Details
2017-10-27 13:24:53 +01:00
Hervé Boutemy a7fc242de5 [MPLUGIN-327] switched to Git 2017-10-22 11:27:32 +02:00
Herve Boutemy 8d1ba27e95 fix IT configuration (and explain why)
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1809798 13f79535-47bb-0310-9956-ffa450edef68
2017-09-27 01:53:50 +00:00
Herve Boutemy f99796ee68 add Java 8 specific source code to check that compiler is configured with source/target 1.8
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1809797 13f79535-47bb-0310-9956-ffa450edef68
2017-09-27 01:12:06 +00:00
Herve Boutemy a3371bc6fb upgrade m-compiler-p to a version that supports maven.compiler.source/target properties
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1809794 13f79535-47bb-0310-9956-ffa450edef68
2017-09-27 00:55:18 +00:00
Herve Boutemy e564b8d54d upgrade maven-invoker-plugin to latest
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1809793 13f79535-47bb-0310-9956-ffa450edef68
2017-09-27 00:35:21 +00:00
Robert Scholte d38ef497bc [MPLUGIN-324] javadoc generated by helpmojo goal of maven-plugin-plugin produces build failures
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1806713 13f79535-47bb-0310-9956-ffa450edef68
2017-08-30 17:14:24 +00:00
Christian Schulte 92f5eaaa3d o Updated to stop suppressing exceptions when closing resources fails.
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1784346 13f79535-47bb-0310-9956-ffa450edef68
2017-02-25 04:14:32 +00:00
Christian Schulte d484f85160 o Updated to make the test work when checking out into a directory like "/tmp/Spaces & Special Char/plugin-tools".
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1784345 13f79535-47bb-0310-9956-ffa450edef68
2017-02-25 04:12:14 +00:00
Robert Scholte 04684f0fc3 [MPLUGIN-321] improve documentation on maven-plugin-annotations telling that optional=true is sufficient
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778915 13f79535-47bb-0310-9956-ffa450edef68
2017-01-15 13:21:08 +00:00
Guillaume Boué e44bb78aff [MPLUGIN-290] Version 3.4 fails to parse enums with Regex patterns
Already fixed by the upgrade of QDox to 2.0-M5 done in r1778362. Test added to prevent regressions.

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778912 13f79535-47bb-0310-9956-ffa450edef68
2017-01-15 13:08:04 +00:00
Guillaume Boué 1f70e4ea47 Updating the version from 3.6-SNAPSHOT to 3.5.1-SNAPSHOT as per http://mail-archives.apache.org/mod_mbox/maven-dev/201701.mbox/%3Cop.ytya62tukdkhrr%40desktop-2khsk44%3E.
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778908 13f79535-47bb-0310-9956-ffa450edef68
2017-01-15 12:19:50 +00:00
Herve Boutemy 3ec7f6f61d [MPLUGIN-319] fixed compilation issue (no generics)
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778778 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 14:58:12 +00:00
Robert Scholte bcf94564ba [MPLUGIN-319] @since values ignored in report
New strategy where we don't need a parameter anymore (who would change it?)


git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778770 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 13:39:47 +00:00
Herve Boutemy 6fda7882f1 [MPLUGIN-319] fixed IT since parameter was renamed
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778762 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 12:27:16 +00:00
Herve Boutemy e430efe682 [MPLUGIN-319] renamed parameter, improved documentation, and removed readonly
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778722 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 05:01:35 +00:00
Herve Boutemy e598cdfd30 [MPLUGIN-319] improved javadoc
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778721 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 04:31:02 +00:00
Herve Boutemy 053932347f [MPLUGIN-319] added @since
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778719 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 04:10:31 +00:00
Herve Boutemy 81eb53a1c5 [MPLUGIN-319] added references to MNG-6109 bug
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778718 13f79535-47bb-0310-9956-ffa450edef68
2017-01-14 03:54:45 +00:00
Guillaume Boué 49349dee7a [MPLUGIN-314] invalid requirement role generated in plugin.xml
[MPLUGIN-320] JavaJavadocMojoDescriptorExtractor fails with Java 8 lambdas.

Updating QDox to 2.0-M5, containing the fixes for both of those issues (see QDOX-13 and QDOX-15).

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778362 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 00:07:08 +00:00
Guillaume Boué f50e9ebb58 Updating the unit tests so that they can be run successfully directly inside Eclipse: this means fixing the location of the basedir by extending from PlexusTestCase and using the getBasedir() method.
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778361 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 00:06:50 +00:00
Guillaume Boué 117eaf66a5 [MPLUGIN-319] @since values ignored in report
The IT relies on reading the generated HTML site for the test mojo in English, but the report is written in the default locale of the JVM. As such, it fails when run on machines with a locale different than English. Therefore, the locale needs to be forced to English in the MAVEN_OPTS.

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1778360 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 00:06:37 +00:00
Robert Scholte 365f900755 [MPLUGIN-315] improve mojo description: show parameter name as <parameter>
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1770579 13f79535-47bb-0310-9956-ffa450edef68
2016-11-20 18:51:40 +00:00
Robert Scholte d49dbb8b79 [MPLUGIN-319] @since values ignored in report
match IT folder with issue


git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1770563 13f79535-47bb-0310-9956-ffa450edef68
2016-11-20 14:45:37 +00:00
Robert Scholte 89a82c2963 [MPLUGIN-319] @since values ignored in report
Only use plugin.xml for M3.4.0 and above due to MNG-6109

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1770562 13f79535-47bb-0310-9956-ffa450edef68
2016-11-20 14:42:29 +00:00
Robert Scholte f223b01735 module-info must be excluded
use m-plugin-p 3.5 to build plugin, since it supports java9

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1769688 13f79535-47bb-0310-9956-ffa450edef68
2016-11-14 20:46:57 +00:00
Robert Scholte 2767d04ccb Fix Maven logo
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1758298 13f79535-47bb-0310-9956-ffa450edef68
2016-08-29 20:35:38 +00:00
Robert Scholte 5e063a0907 [maven-release-plugin] prepare for next development iteration
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1757928 13f79535-47bb-0310-9956-ffa450edef68
2016-08-26 21:19:10 +00:00
47 changed files with 927 additions and 135 deletions

1
Jenkinsfile vendored 100644
View File

@ -0,0 +1 @@
asfMavenStdBuild(javaVersions:['8','7'])

View File

@ -23,7 +23,7 @@
<parent>
<artifactId>maven-plugin-tools</artifactId>
<groupId>org.apache.maven.plugin-tools</groupId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-annotations</artifactId>

View File

@ -23,7 +23,7 @@
<parent>
<artifactId>maven-plugin-tools</artifactId>
<groupId>org.apache.maven.plugin-tools</groupId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<groupId>org.apache.maven.plugins</groupId>
@ -264,6 +264,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.5</version>
<!-- will use previous maven-plugin-plugin release to build current maven-plugin-plugin as configured in parent -->
<executions>
<execution>

View File

@ -36,6 +36,8 @@ under the License.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- pom properties values not taken into account since invoker defines properties -->
<!-- that override what's defined in pom -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
@ -70,7 +72,11 @@ under the License.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<version>3.1</version>
<configuration>
<source>1.8</source><!-- avoid ${maven.compiler.source} since value is not as expected -->
<target>1.8</target><!-- avoid ${maven.compiler.target} since value is not as expected -->
</configuration>
</plugin>
</plugins>
</pluginManagement>

View File

@ -0,0 +1,30 @@
package fr.ca;
/*
* 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.
*/
public interface TestInterface {
/**
* Java 8 required to support such default method implementation
*/
public default void foo(){
}
}

View File

@ -21,6 +21,9 @@ package fr.ca;
public interface TestInterface {
/**
* Java 8 required to support such default method implementation
*/
public default void foo(){
}

View File

@ -0,0 +1,19 @@
# 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.goals = clean plugin:report
invoker.mavenOpts = -Duser.language=en -Duser.country=US -Duser.variant=US

View File

@ -0,0 +1,86 @@
<?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>org.apache.maven.plugins.its.plugin</groupId>
<artifactId>report-since</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>@sitePluginVersion@</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>index</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
</plugin>
</plugins>
</reporting>
</project>

View File

@ -0,0 +1,67 @@
package org;
/*
* 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.
*/
import org.apache.maven.plugin.AbstractMojo;
/**
* Does nothing.
*
* @goal noop
* @phase process-sources
* @requiresDependencyResolution test
* @requiresDirectInvocation true
* @requiresOnline
* @inheritByDefault false
* @execute phase="compile"
* @aggregator
* @since 1.0
*
* @deprecated You don't use test goals, do you?
*/
public class MyMojo
extends AbstractMojo
{
/**
* This is a test.
*
* @parameter
* @required
*/
@SuppressWarnings( "unused" )
private String required;
/**
* This is a test.
*
* @parameter expression="${string}" default-value="${project.version}/</markup-must-be-escaped>"
* @deprecated Just testing.
* @since 1.1
*/
@SuppressWarnings( "unused" )
private String string;
public void execute()
{
// intentional do nothing
}
}

View File

@ -0,0 +1,27 @@
/*
* 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.
*/
assert new File( basedir, 'target/generated-site' ).exists()
content = new File( basedir, 'target/generated-site/xdoc/noop-mojo.xml' ).text
assert content.contains( '<li><strong>Since</strong>: <code>1.0</code></li>' )
assert content.contains( '<li><strong>Since</strong>: <code>1.1</code></li>' )
return true

View File

@ -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.goals = process-classes javadoc:javadoc

View File

@ -0,0 +1,95 @@
<?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>org.apache.maven.plugins.plugin.its</groupId>
<artifactId>mplugin3224</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<description>
Generation javadoc for private methods should be valid
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>@project.version@</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<level>private</level>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
<executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution>
<id>help-goal</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,68 @@
package test;
/*
* 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.
*/
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
/**
* MOJO-DESCRIPTION. Some "quotation" marks and backslashes '\\', some <strong>important</strong> javadoc<br> and an
* inline link to {@link org.apache.maven.plugin.AbstractMojo}.
*
* @deprecated As of 1.0, use the "quoted" goal instead.
* @since 2.1
*/
@Mojo( name= "test" )
public class MyMojo
extends AbstractMojo
{
/**
* This parameter uses "quotation" marks and backslashes '\\' in its description. Those characters <em>must</em> be
* escaped in Java string literals.
*
* @since 2.0
*/
@Parameter( defaultValue = "escape\\backslash" )
private String defaultParam;
/**
* This parameter is deprecated.
*
* @deprecated As of version 1.0, use the {@link #defaultParam} instead.
*/
@Parameter
private String deprecatedParam;
@Parameter( property = "test.undocumented", required = true )
private String undocumentedParam;
/**
* Readonly parameter: should not be proposed for configuration.
*/
@Parameter( defaultValue = "not for configuration", readonly = true )
private String readonly;
public void execute()
{
}
}

View File

@ -19,10 +19,24 @@ package org.apache.maven.plugin.plugin;
* under the License.
*/
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.siterenderer.Renderer;
import org.apache.maven.execution.RuntimeInformation;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
@ -33,6 +47,7 @@ import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.plugin.descriptor.MNG6109PluginDescriptorBuilder;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.AbstractMavenReport;
import org.apache.maven.reporting.AbstractMavenReportRenderer;
@ -50,17 +65,6 @@ import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
/**
* Generates the Plugin's documentation report: <code>plugin-info.html</code> plugin overview page,
* and one <code><i>goal</i>-mojo.html</code> per goal.
@ -186,6 +190,12 @@ public class PluginReport
*/
@Parameter( defaultValue = "${localRepository}", required = true, readonly = true )
protected ArtifactRepository local;
/**
* @since 3.5.1
*/
@Component
private RuntimeInformation rtInfo;
/**
* {@inheritDoc}
@ -250,7 +260,8 @@ public class PluginReport
private PluginDescriptor extractPluginDescriptor()
throws MavenReportException
{
PluginDescriptorBuilder builder = new PluginDescriptorBuilder();
PluginDescriptorBuilder builder = getPluginDescriptorBuilder();
try
{
return builder.build( new FileReader( new File( project.getBuild().getOutputDirectory(),
@ -319,6 +330,38 @@ public class PluginReport
return pluginDescriptor;
}
/**
* Return the pluginDescriptorBuilder to use based on the Maven version: either use the original from the
* maven-plugin-api or a patched version for Maven versions before the MNG-6109 fix
* (because of Maven MNG-6109 bug that won't give accurate 'since' info when reading plugin.xml).
*
* @return the proper pluginDescriptorBuilder
* @see https://issues.apache.org/jira/browse/MNG-6109
* @see https://issues.apache.org/jira/browse/MPLUGIN-319
*/
private PluginDescriptorBuilder getPluginDescriptorBuilder()
{
PluginDescriptorBuilder pluginDescriptorBuilder;
try
{
VersionRange versionRange = VersionRange.createFromVersionSpec( "(3.3.9,)" );
if ( versionRange.containsVersion( rtInfo.getApplicationVersion() ) )
{
pluginDescriptorBuilder = new PluginDescriptorBuilder();
}
else
{
pluginDescriptorBuilder = new MNG6109PluginDescriptorBuilder();
}
}
catch ( InvalidVersionSpecificationException e )
{
return new MNG6109PluginDescriptorBuilder();
}
return pluginDescriptorBuilder;
}
/**
* {@inheritDoc}
*/

View File

@ -0,0 +1,62 @@
package org.apache.maven.plugins.plugin.descriptor;
/*
* 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.
*/
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
/**
* Reads the plugin descriptor and adds the fix for MNG-6109 when using Maven-3.3.9 and before.
* Class can be removed once Maven 3.5.0 is the prerequisite for this plugin.
*
* @author Robert Scholte
* @since 3.5.1
*/
public class MNG6109PluginDescriptorBuilder extends PluginDescriptorBuilder
{
@Override
public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c, PluginDescriptor pluginDescriptor )
throws PlexusConfigurationException
{
MojoDescriptor mojoDescriptor = super.buildComponentDescriptor( c, pluginDescriptor );
// ----------------------------------------------------------------------
// Parameters
// ----------------------------------------------------------------------
PlexusConfiguration[] parameterConfigurations = c.getChild( "parameters" ).getChildren( "parameter" );
for ( PlexusConfiguration d : parameterConfigurations )
{
String parameterName = d.getChild( "name" ).getValue();
Parameter pd = (Parameter) mojoDescriptor.getParameterMap().get( parameterName );
String parameterSince = d.getChild( "since" ).getValue();
pd.setSince( parameterSince );
}
return mojoDescriptor;
}
}

View File

@ -94,7 +94,7 @@ Using Plugin Tools Java5 Annotations
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${project.version}</version>
<scope>provided</scope><!-- annotations are needed only to build the plugin -->
<optional>true</optional> <!-- annotations are not used at runtime because @Retention(value=CLASS), they are needed only to build the plugin -->
</dependency>
</dependencies>
...

View File

@ -29,7 +29,7 @@ under the License.
<href>http://maven.apache.org/</href>
</bannerLeft>
<bannerRight>
<src>http://maven.apache.org/images/maventxt_logo_200.gif</src>
<src>https://maven.apache.org/images/maven-logo-black-on-white.png</src>
</bannerRight>
<skin>

View File

@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-annotations</artifactId>

View File

@ -50,7 +50,7 @@ public class TestAnnotationsReader
MojoAnnotationsScanner mojoAnnotationsScanner = (MojoAnnotationsScanner) lookup( MojoAnnotationsScanner.ROLE );
MojoAnnotationsScannerRequest request = new MojoAnnotationsScannerRequest();
request.setClassesDirectories( Collections.singletonList( new File( "target/test-classes" ) ) );
request.setClassesDirectories( Collections.singletonList( new File( getBasedir(), "target/test-classes" ) ) );
request.setIncludePatterns( Arrays.asList( "**/FooMojo.class" ) );
request.setProject( new MavenProject() );

View File

@ -23,17 +23,17 @@ import static org.easymock.EasyMock.*;
import java.io.File;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.logging.Logger;
import junit.framework.TestCase;
public class DefaultMojoAnnotationsScannerTest
extends TestCase
extends PlexusTestCase
{
private DefaultMojoAnnotationsScanner scanner = new DefaultMojoAnnotationsScanner();
public void testSkipModuleInfoClassInArchive() throws Exception
{
scanner.scanArchive( new File( "src/test/resources/java9-module.jar"), null, false );
scanner.scanArchive( new File( getBasedir(), "target/test-classes/java9-module.jar"), null, false );
}
public void testJava8Annotations() throws Exception
@ -42,7 +42,7 @@ public class DefaultMojoAnnotationsScannerTest
expect( logger.isDebugEnabled() ).andReturn( false );
replay( logger );
scanner.enableLogging( logger );
scanner.scanArchive( new File( "src/test/resources/java8-annotations.jar"), null, false );
scanner.scanArchive( new File( getBasedir(), "target/test-classes/java8-annotations.jar"), null, false );
}
}

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-api</artifactId>

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-generators</artifactId>

View File

@ -473,9 +473,9 @@ public class PluginXdocGenerator
{
Parameter parameter = parameters.next();
w.startElement( "p" );
w.startElement( "h4" );
w.writeMarkup( format( "pluginxdoc.mojodescriptor.parameter.name_internal", parameter.getName() ) );
w.endElement(); //p
w.endElement();
if ( StringUtils.isNotEmpty( parameter.getDeprecated() ) )
{

View File

@ -398,7 +398,7 @@ public class HelpMojo
* @param indentSize The size of each indentation, must not be negative.
* @param lineLength The length of the line, must not be negative.
* @return The sequence of display lines, never <code>null</code>.
* @throws NegativeArraySizeException if <code>indent < 0</code>
* @throws NegativeArraySizeException if <code>indent &lt; 0</code>
*/
private static List<String> toLines( String text, int indent, int indentSize, int lineLength )
{

View File

@ -42,8 +42,8 @@ pluginxdoc.mojodescriptor.inheritedByDefault=Is NOT inherited by default in mult
pluginxdoc.mojodescriptor.parameter.details=Parameter Details
pluginxdoc.mojodescriptor.parameter.deprecated=<strong>Deprecated.</strong> {0}
pluginxdoc.mojodescriptor.parameter.name=Name
pluginxdoc.mojodescriptor.parameter.name_link=<strong><a href="#{0}">{0}</a></strong>
pluginxdoc.mojodescriptor.parameter.name_internal=<strong><a name="{0}">{0}</a>:</strong>
pluginxdoc.mojodescriptor.parameter.name_link=<code><a href="#{0}">&lt;{0}&gt;</a></code>
pluginxdoc.mojodescriptor.parameter.name_internal=<strong><a name="{0}">&lt;{0}&gt;</a></strong>
pluginxdoc.mojodescriptor.parameter.description=Description
pluginxdoc.mojodescriptor.parameter.type=Type
pluginxdoc.mojodescriptor.parameter.since=Since

View File

@ -42,7 +42,6 @@ pluginxdoc.mojodescriptor.inheritedByDefault=N'est PAS h\u00e9rit\u00e9 par d\u0
pluginxdoc.mojodescriptor.parameter.details=D\u00e9tails des param\u00e8tres
pluginxdoc.mojodescriptor.parameter.deprecated=<strong>Obsol\u00e8te.</strong> {0}
pluginxdoc.mojodescriptor.parameter.name=Nom
pluginxdoc.mojodescriptor.parameter.name_internal=<strong><a name="{0}">{0}</a> :</strong>
pluginxdoc.mojodescriptor.parameter.description=Description
pluginxdoc.mojodescriptor.parameter.type=Type
pluginxdoc.mojodescriptor.parameter.since=Depuis

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-java</artifactId>

View File

@ -233,4 +233,28 @@ public class JavaMojoDescriptorExtractorTest
assertEquals( 1, results.size() );
}
public void testSingleTypeImportWithFullyQualifiedClassName()
throws Exception
{
List<MojoDescriptor> results = extract( "MPLUGIN-314" );
assertEquals( 1, results.size() );
}
public void testMethodReferenceInEnumConstructor()
throws Exception
{
List<MojoDescriptor> results = extract( "MPLUGIN-320" );
assertNull( results );
}
public void testEnumWithRegexPattern()
throws Exception
{
List<MojoDescriptor> results = extract( "MPLUGIN-290" );
assertNull( results );
}
}

View File

@ -0,0 +1,32 @@
/*
* 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.
*/
import java.util.regex.Pattern;
public enum Test
{
Test( Pattern.compile( "a" ) );
private Test( Pattern p )
{
}
}

View File

@ -0,0 +1,33 @@
<?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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos/>
<dependencies/>
</plugin>

View File

@ -0,0 +1,41 @@
/*
* 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.
*/
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.plugin.AbstractMojo;
/**
* Tests that using an import and the same fully qualified class name results in a correct requirement role generated.
*
* @goal test
*/
public class MyMojo
extends AbstractMojo
{
/**
* @component
*/
private org.apache.maven.artifact.resolver.ArtifactResolver resolver;
public void execute()
{
}
}

View File

@ -0,0 +1,56 @@
<?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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>test</goal>
<description>Tests that using an import and the same fully qualified class name results in a correct requirement role generated.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<implementation>MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters/>
<requirements>
<requirement>
<role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
<field-name>resolver</field-name>
</requirement>
</requirements>
</mojo>
</mojos>
<dependencies/>
</plugin>

View File

@ -0,0 +1,32 @@
/*
* 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.
*/
import java.util.function.Supplier;
public enum Exceptions {
NPE(NullPointerException::new),
IAE(IllegalArgumentException::new);
private final Supplier<? extends Exception> supplier;
<T extends Exception> Exceptions(Supplier<T> supplier) {
this.supplier = supplier;
}
}

View File

@ -0,0 +1,33 @@
<?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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos/>
<dependencies/>
</plugin>

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-javadoc</artifactId>

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-ant</artifactId>

View File

@ -19,6 +19,16 @@ package org.apache.maven.tools.plugin.extractor.ant;
* under the License.
*/
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
@ -29,18 +39,6 @@ import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.codehaus.plexus.component.repository.ComponentRequirement;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
public class AntMojoDescriptorExtractorTest
extends TestCase
@ -100,39 +98,47 @@ public class AntMojoDescriptorExtractorTest
assertEquals( "Mojo descriptor: " + desc.getGoal() + " is missing 'PathTranslator' component requirement.", PathTranslator.class.getName(), req.getRole() );
}
}
private Map buildTestMap( String resourceDirName )
{
Map result = new HashMap();
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
URL mojosXmlUrl = cloader.getResource( resourceDirName + "/test.mojos.xml" );
if ( mojosXmlUrl == null )
try
{
fail( "No classpath resource named: '" + resourceDirName + "/test.mojos.xml' could be found." );
}
File mojosXml = new File( StringUtils.replace( mojosXmlUrl.getPath(), "%20", " " ) );
File dir = mojosXml.getParentFile();
Set scripts = new HashSet();
String[] listing = dir.list();
for ( int i = 0; listing != null && i < listing.length; i++ )
{
if ( listing[i].endsWith( ".mojos.xml" ) )
Map result = new HashMap();
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
URL mojosXmlUrl = cloader.getResource( resourceDirName + "/test.mojos.xml" );
if ( mojosXmlUrl == null )
{
File f = new File( dir, listing[i] ).getAbsoluteFile();
scripts.add( f );
fail( "No classpath resource named: '" + resourceDirName + "/test.mojos.xml' could be found." );
}
// TODO As of JDK 7, replace with Paths.get( resource.toURI() ).toFile()
File mojosXml = new File( mojosXmlUrl.toURI() );
File dir = mojosXml.getParentFile();
Set scripts = new HashSet();
String[] listing = dir.list();
for ( int i = 0; listing != null && i < listing.length; i++ )
{
if ( listing[i].endsWith( ".mojos.xml" ) )
{
File f = new File( dir, listing[i] ).getAbsoluteFile();
scripts.add( f );
}
}
result.put( dir.getAbsolutePath(), scripts );
return result;
}
catch ( final URISyntaxException e )
{
throw new AssertionError( e );
}
result.put( dir.getAbsolutePath(), scripts );
return result;
}
// TODO
}

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-beanshell</artifactId>

View File

@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-tools-model</artifactId>

View File

@ -78,6 +78,9 @@ public class PluginMetadataParser
descriptors.add( descriptor );
}
}
reader.close();
reader = null;
}
catch ( IOException e )
{

View File

@ -19,16 +19,12 @@ package org.apache.maven.tools.plugin.extractor.model;
* under the License.
*/
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.tools.plugin.extractor.model.PluginMetadataParseException;
import org.apache.maven.tools.plugin.extractor.model.PluginMetadataParser;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Set;
import junit.framework.TestCase;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
public class PluginMetadataParserTest
extends TestCase
@ -59,16 +55,24 @@ public class PluginMetadataParserTest
assertTrue( desc.getImplementation().endsWith( ":test2" ) );
assertEquals( "test2", desc.getGoal() );
}
private File getMetadataFile( String name )
{
URL resource = Thread.currentThread().getContextClassLoader().getResource( name );
if ( resource == null )
try
{
fail( "Cannot find classpath resource: '" + name + "'." );
URL resource = Thread.currentThread().getContextClassLoader().getResource( name );
if ( resource == null )
{
fail( "Cannot find classpath resource: '" + name + "'." );
}
// TODO As of JDK 7, replace with Paths.get( resource.toURI() ).toFile()
return new File( resource.toURI() );
}
catch ( final URISyntaxException e )
{
throw new AssertionError( e );
}
return new File( StringUtils.replace( resource.getPath(), "%20", " " ) );
}
}

View File

@ -23,7 +23,7 @@ under the License.
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-script-ant</artifactId>

View File

@ -18,10 +18,6 @@ package org.apache.maven.script.ant;
* specific language governing permissions and limitations
* under the License.
*/
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import java.io.ByteArrayOutputStream;
import java.io.File;
@ -29,13 +25,14 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.Reader;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Build;
@ -59,9 +56,10 @@ import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
import junit.framework.TestCase;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
public class AntMojoWrapperTest
extends TestCase
@ -69,7 +67,7 @@ public class AntMojoWrapperTest
public void test2xStylePlugin()
throws PlexusConfigurationException, IOException, ComponentInstantiationException, MojoExecutionException,
ComponentConfigurationException, ArchiverException
ComponentConfigurationException, ArchiverException, URISyntaxException
{
String pluginXml = "META-INF/maven/plugin-2.1.xml";
@ -89,7 +87,7 @@ public class AntMojoWrapperTest
public void test20StylePlugin()
throws PlexusConfigurationException, IOException, ComponentInstantiationException, MojoExecutionException,
ComponentConfigurationException, ArchiverException
ComponentConfigurationException, ArchiverException, URISyntaxException
{
String pluginXml = "META-INF/maven/plugin-2.0.xml";
@ -128,7 +126,7 @@ public class AntMojoWrapperTest
private List<String> run( String pluginXml, boolean includeImplied )
throws PlexusConfigurationException, IOException, ComponentInstantiationException, MojoExecutionException,
ComponentConfigurationException, ArchiverException
ComponentConfigurationException, ArchiverException, URISyntaxException
{
StackTraceElement stack = new Throwable().getStackTrace()[1];
System.out.println( "\n\nRunning: " + stack.getMethodName() + "\n\n" );
@ -146,6 +144,8 @@ public class AntMojoWrapperTest
{
reader = new InputStreamReader( resource.openStream() );
pd = new PluginDescriptorBuilder().build( reader, pluginXml );
reader.close();
reader = null;
}
finally
{
@ -168,7 +168,8 @@ public class AntMojoWrapperTest
if ( includeImplied )
{
File pluginXmlFile = new File( StringUtils.replace( resource.getPath(), "%20", " " ) );
// TODO As of JDK 7, replace with Paths.get( resource.toURI() ).toFile()
File pluginXmlFile = new File( resource.toURI() );
File jarFile = File.createTempFile( "AntMojoWrapperTest.", ".test.jar" );
jarFile.deleteOnExit();

View File

@ -23,7 +23,7 @@ under the License.
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-script-beanshell</artifactId>

View File

@ -23,7 +23,7 @@ under the License.
<parent>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-script</artifactId>

68
pom.xml
View File

@ -29,7 +29,7 @@
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId>
<version>3.5</version>
<version>3.5.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Maven Plugin Tools</name>
@ -74,9 +74,10 @@
</modules>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugin-tools/tags/maven-plugin-tools-3.5</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugin-tools/tags/maven-plugin-tools-3.5</developerConnection>
<url>http://svn.apache.org/viewvc/maven/plugin-tools/tags/maven-plugin-tools-3.5</url>
<connection>scm:git:https://gitbox.apache.org/repos/asf/maven-plugin-tools.git</connection>
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-plugin-tools.git</developerConnection>
<url>https://github.com/apache/maven-plugin-tools/tree/${project.scm.tag}</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<system>jira</system>
@ -97,7 +98,7 @@
<pluginTestingHarnessVersion>1.2</pluginTestingHarnessVersion>
<mavenVersion>2.2.1</mavenVersion>
<antVersion>1.7.1</antVersion>
<mavenInvokerPluginVersion>1.10</mavenInvokerPluginVersion>
<mavenInvokerPluginVersion>3.0.1</mavenInvokerPluginVersion>
<maven.site.path>plugin-tools-archives/plugin-tools-LATEST</maven.site.path>
</properties>
@ -214,7 +215,7 @@
<dependency>
<groupId>com.thoughtworks.qdox</groupId>
<artifactId>qdox</artifactId>
<version>2.0-M4</version>
<version>2.0-M5</version>
</dependency>
<dependency>
@ -398,33 +399,34 @@
<activation>
<jdk>[1.9,)</jdk>
</activation>
<!-- chicken-egg problem. Can only be built with Java9 once maven-plugin-plugin 3.5 is available -->
<!-- <build> -->
<!-- <plugins> -->
<!-- <plugin> -->
<!-- <artifactId>maven-enforcer-plugin</artifactId> -->
<!-- <executions> -->
<!-- <execution> -->
<!-- <id>enforce-bytecode-version</id> -->
<!-- <configuration> -->
<!-- <rules> -->
<!-- <enforceBytecodeVersion> -->
<!-- <maxJdkVersion>1.9</maxJdkVersion> -->
<!-- </enforceBytecodeVersion> -->
<!-- </rules> -->
<!-- </configuration> -->
<!-- </execution> -->
<!-- </executions> -->
<!-- <dependencies> -->
<!-- <dependency> -->
<!-- <groupId>org.codehaus.mojo</groupId> -->
<!-- <artifactId>extra-enforcer-rules</artifactId> -->
<!-- <version>1.0-beta-5</version> -->
<!-- </dependency> -->
<!-- </dependencies> -->
<!-- </plugin> -->
<!-- </plugins> -->
<!-- </build> -->
<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-bytecode-version</id>
<configuration>
<rules>
<enforceBytecodeVersion>
<ignoreClasses>
<ignoreClass>module-info</ignoreClass>
</ignoreClasses>
</enforceBytecodeVersion>
</rules>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>1.0-beta-5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>

View File

@ -27,7 +27,7 @@ under the License.
<href>https://maven.apache.org/</href>
</bannerLeft>
<bannerRight>
<src>https://maven.apache.org/images/maventxt_logo_200.gif</src>
<src>https://maven.apache.org/images/maven-logo-black-on-white.png</src>
</bannerRight>
<skin>