This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to annotated tag japicmp-base-0.1.0 in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
commit 7af9e4952831788d8c8438c666ebc61a1042d0bd Author: siom79 <martin.m...@googlemail.com> AuthorDate: Sat Jun 21 19:18:15 2014 +0200 maven-plugin: added parameter from CLI tool, add local file path as old or new archive location; java source and target level is now 1.7; removed dependency to eclipse-aether API --- japicmp-maven-plugin/pom.xml | 19 +- .../main/java/japicmp/maven/ConfigurationFile.java | 13 + .../src/main/java/japicmp/maven/JApiCmpMojo.java | 264 +++++++++++++++------ .../src/main/java/japicmp/maven/Parameter.java | 49 ++++ .../src/main/java/japicmp/maven/Version.java | 9 + japicmp-testbase/japicmp-test-maven-plugin/pom.xml | 7 + japicmp-testbase/japicmp-test-v2/pom.xml | 32 +++ japicmp/pom.xml | 4 - japicmp/src/main/java/japicmp/cli/CliParser.java | 36 +-- japicmp/src/main/java/japicmp/config/Options.java | 24 ++ .../main/java/japicmp/model/AccessModifier.java | 13 + pom.xml | 9 +- 12 files changed, 360 insertions(+), 119 deletions(-) diff --git a/japicmp-maven-plugin/pom.xml b/japicmp-maven-plugin/pom.xml index 8c9c796..f83a912 100644 --- a/japicmp-maven-plugin/pom.xml +++ b/japicmp-maven-plugin/pom.xml @@ -14,7 +14,6 @@ <properties> <maven.version>3.1.0</maven.version> - <aether.version>0.9.0.M2</aether.version> </properties> <prerequisites> @@ -48,19 +47,19 @@ <version>${maven.version}</version> </dependency> <dependency> - <groupId>org.eclipse.aether</groupId> - <artifactId>aether-api</artifactId> - <version>${aether.version}</version> + <groupId>japicmp</groupId> + <artifactId>japicmp</artifactId> + <version>${project.version}</version> </dependency> <dependency> - <groupId>org.eclipse.aether</groupId> - <artifactId>aether-util</artifactId> - <version>${aether.version}</version> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${maven.version}</version> </dependency> <dependency> - <groupId>japicmp</groupId> - <artifactId>japicmp</artifactId> - <version>${project.version}</version> + <groupId>org.apache.maven</groupId> + <artifactId>maven-compat</artifactId> + <version>${maven.version}</version> </dependency> </dependencies> diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java new file mode 100644 index 0000000..c5685cd --- /dev/null +++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java @@ -0,0 +1,13 @@ +package japicmp.maven; + +public class ConfigurationFile { + private String path; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java index 11b0582..e8b8c46 100644 --- a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java +++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java @@ -1,28 +1,31 @@ package japicmp.maven; -import com.google.common.io.Files; +import com.google.common.base.Optional; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.config.Options; +import japicmp.model.AccessModifier; +import japicmp.model.JApiChangeStatus; import japicmp.model.JApiClass; import japicmp.output.stdout.StdoutOutputGenerator; +import japicmp.output.xml.XmlOutputGenerator; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.factory.DefaultArtifactFactory; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; +import org.apache.maven.artifact.resolver.ArtifactResolutionResult; +import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.DefaultMavenProjectBuilder; import org.apache.maven.repository.internal.MavenRepositorySystemUtils; -import org.eclipse.aether.DefaultRepositorySystemSession; -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.repository.LocalRepository; -import org.eclipse.aether.repository.RemoteRepository; -import org.eclipse.aether.resolution.ArtifactRequest; -import org.eclipse.aether.resolution.ArtifactResult; +import org.apache.maven.settings.Settings; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.nio.charset.Charset; import java.util.List; /** @@ -31,15 +34,22 @@ import java.util.List; public class JApiCmpMojo extends AbstractMojo { /** * @parameter + * @required */ private Version oldVersion; /** * @parameter + * @required */ private Version newVersion; /** + * @parameter + */ + private Parameter parameter; + + /** * @parameter expression="${project.build.directory}" * @required */ @@ -48,82 +58,202 @@ public class JApiCmpMojo extends AbstractMojo { /** * @component */ - private RepositorySystem repoSystem; + private ArtifactFactory artifactFactory; + + /** + * @component + */ + private ArtifactResolver artifactResolver; + + /** + * @parameter default-value="${localRepository}" + */ + private ArtifactRepository localRepository; /** - * @component default-value="${project.remoteProjectRepositories}" + * @parameter default-value="${project.remoteArtifactRepositories}" */ - private List<RemoteRepository> remoteRepos; + private List<ArtifactRepository> artifactRepositories; + + /** + * The system settings for Maven. This is the instance resulting from + * merging global and user-level settings files. + * + * @parameter expression="${settings}" + * @readonly + * @required + */ + private Settings settings; public void execute() throws MojoExecutionException, MojoFailureException { - File oldVersionFile = null; - File newVersionFile = null; - if (oldVersion != null) { - Dependency dependency = oldVersion.getDependency(); - if (dependency != null) { - String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion(); - getLog().debug("oldVersion: " + descriptor); - oldVersionFile = resolveArtifact(descriptor); + File newVersionFile = retrieveFileFromConfiguration(newVersion, "newVersion"); + File oldVersionFile = retrieveFileFromConfiguration(oldVersion, "oldVersion"); + List<JApiClass> jApiClasses = compareArchives(newVersionFile, oldVersionFile); + if (projectBuildDir != null && projectBuildDir.exists()) { + try { + File jApiCmpBuildDir = createJapiCmpBaseDir(); + Options options = createOptions(); + String diffOutput = generateDiffOutput(newVersionFile, oldVersionFile, jApiClasses, options); + createFileAndWriteTo(diffOutput, jApiCmpBuildDir); + generateXmlOutput(newVersionFile, oldVersionFile, jApiClasses, jApiCmpBuildDir, options); + breakBuildIfNecessary(jApiClasses); + } catch (IOException e) { + throw new MojoFailureException(String.format("Failed to construct output directory: %s", e.getMessage()), e); } + } else { + throw new MojoFailureException("Could not determine the location of the build directory."); } - if (newVersion != null) { - Dependency dependency = newVersion.getDependency(); - if (dependency != null) { - String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion(); - getLog().debug("newVersion: " + descriptor); - newVersionFile = resolveArtifact(descriptor); + } + + private void breakBuildIfNecessary(List<JApiClass> jApiClasses) throws MojoFailureException { + if(breakBuildOnModificationsParameter()) { + for(JApiClass jApiClass : jApiClasses) { + if(jApiClass.getChangeStatus() != JApiChangeStatus.UNCHANGED) { + throw new MojoFailureException(String.format("Breaking the build because there is at least one modified class: %s", jApiClass.getFullyQualifiedName())); + } } } - if(oldVersionFile != null && newVersionFile != null) { - JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions(); - JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions); - List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldVersionFile, newVersionFile); - StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator(); - String output = stdoutOutputGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, new Options()); - getLog().info(output); - if(projectBuildDir != null && projectBuildDir.exists()) { + } + + private Options createOptions() throws MojoFailureException { + Options options = new Options(); + if (parameter != null) { + String accessModifierArg = parameter.getAccessModifier(); + if (accessModifierArg != null) { try { - File japiBuildDir = new File(projectBuildDir.getCanonicalPath() + File.separator + "japicmp"); - japiBuildDir.mkdirs(); - File diffOutputfile = new File(japiBuildDir.getCanonicalPath() + File.separator + "japicmp.diff"); - FileWriter fileWriter = null; - try { - fileWriter = new FileWriter(diffOutputfile); - fileWriter.write(output); - } catch(Exception e) { - throw new MojoFailureException(String.format("Failed to write diff file: %s", e.getMessage()), e); - } finally { - if(fileWriter != null) { - fileWriter.close(); - } - } - } catch (IOException e) { - throw new MojoFailureException(String.format("Failed to construct output directory: %s", e.getMessage()), e); + AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase()); + options.setAccessModifier(accessModifier); + } catch (IllegalArgumentException e) { + throw new MojoFailureException(String.format("Invalid value for option accessModifier: %s. Possible values are: %s.", accessModifierArg, AccessModifier.listOfAccessModifier())); + } + } + String onlyModified = parameter.getOnlyModified(); + if (onlyModified != null) { + Boolean booleanOnlyModified = Boolean.valueOf(onlyModified); + options.setOutputOnlyModifications(booleanOnlyModified); + } + String packagesToExclude = parameter.getPackagesToExclude(); + if (packagesToExclude != null) { + try { + options.addPackagesExcludeFromArgument(packagesToExclude); + } catch (Exception e) { + throw new MojoFailureException(e.getMessage()); + } + } + String packagesToInclude = parameter.getPackagesToInclude(); + if (packagesToInclude != null) { + try { + options.addPackageIncludeFromArgument(packagesToInclude); + } catch (Exception e) { + throw new MojoFailureException(e.getMessage()); } } - } else { - throw new MojoFailureException(String.format("At least one required parameter is missing.")); } + return options; + } + + private boolean breakBuildOnModificationsParameter() { + boolean retVal = false; + if (parameter != null) { + retVal = Boolean.valueOf(parameter.getBreakBuildOnModifications()); + } + return retVal; + } + + private void createFileAndWriteTo(String diffOutput, File jApiCmpBuildDir) throws IOException, MojoFailureException { + File outputfile = new File(jApiCmpBuildDir.getCanonicalPath() + File.separator + "japicmp.diff"); + writeToFile(diffOutput, outputfile); + } + + private File createJapiCmpBaseDir() throws IOException { + File jApiCmpBuildDir = new File(projectBuildDir.getCanonicalPath() + File.separator + "japicmp"); + jApiCmpBuildDir.mkdirs(); + return jApiCmpBuildDir; + } + + private String generateDiffOutput(File newVersionFile, File oldVersionFile, List<JApiClass> jApiClasses, Options options) { + StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator(); + String diffOutput = stdoutOutputGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, options); + getLog().info(diffOutput); + return diffOutput; + } + + private void generateXmlOutput(File newVersionFile, File oldVersionFile, List<JApiClass> jApiClasses, File jApiCmpBuildDir, Options options) throws IOException { + XmlOutputGenerator xmlGenerator = new XmlOutputGenerator(); + options.setXmlOutputFile(Optional.of(jApiCmpBuildDir.getCanonicalPath() + File.separator + "japicmp.xml")); + xmlGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, options); } - private File resolveArtifact(String descriptor) throws MojoFailureException { + private List<JApiClass> compareArchives(File newVersionFile, File oldVersionFile) { + JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions(); + JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions); + return jarArchiveComparator.compare(oldVersionFile, newVersionFile); + } + + private File retrieveFileFromConfiguration(Version version, String parameterName) throws MojoFailureException { + if (version != null) { + Dependency dependency = version.getDependency(); + if (dependency != null) { + String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion(); + getLog().debug(parameterName + ": " + descriptor); + File file = resolveArtifact(dependency); + if (file == null) { + throw new MojoFailureException(String.format("Could not resolve dependency with descriptor '%s'.", descriptor)); + } + return file; + } else if (version.getFile() != null) { + ConfigurationFile configurationFile = version.getFile(); + String path = configurationFile.getPath(); + if (path == null) { + throw new MojoFailureException(String.format("The path element in the configuration of the plugin is missing for %s.", parameterName)); + } + File file = new File(path); + if (!file.exists()) { + throw new MojoFailureException(String.format("The path '%s' does not point to an existing file.", path)); + } + if (!file.isFile() || !file.canRead()) { + throw new MojoFailureException(String.format("The file given by path '%s' is either not a file or is not readable.", path)); + } + return file; + } else { + throw new MojoFailureException(String.format("Missing configuration parameter 'dependency'.")); + } + } + throw new MojoFailureException(String.format("Missing configuration parameter: %s", parameterName)); + } + + private void writeToFile(String output, File outputfile) throws MojoFailureException, IOException { + FileWriter fileWriter = null; try { - ArtifactRequest request = new ArtifactRequest(); - request.setArtifact(new DefaultArtifact(descriptor)); - request.setRepositories(remoteRepos); - ArtifactResult result = repoSystem.resolveArtifact(newSession(repoSystem), request); - File file = result.getArtifact().getFile(); - getLog().info("Resolved artifact " + result + " to " + file + " from " + result.getRepository()); - return file; + fileWriter = new FileWriter(outputfile); + fileWriter.write(output); } catch (Exception e) { - throw new MojoFailureException(String.format("Failed to load artifact from repository: %s", e.getMessage()), e); + throw new MojoFailureException(String.format("Failed to write diff file: %s", e.getMessage()), e); + } finally { + if (fileWriter != null) { + fileWriter.close(); + } } } - private static RepositorySystemSession newSession(RepositorySystem system) { - DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); - LocalRepository localRepo = new LocalRepository(new File(System.getProperty("user.home") + "/.m2/repository")); - session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); - return session; + private File resolveArtifact(Dependency dependency) throws MojoFailureException { + notNull(artifactRepositories, "Maven parameter artifactRepositories should be provided by maven container."); + notNull(artifactResolver, "Maven parameter artifactResolver should be provided by maven container."); + notNull(localRepository, "Maven parameter localRepository should be provided by maven container."); + notNull(artifactRepositories, "Maven parameter artifactRepositories should be provided by maven container."); + Artifact artifact = artifactFactory.createBuildArtifact(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "jar"); + ArtifactResolutionRequest request = new ArtifactResolutionRequest(); + request.setArtifact(artifact); + request.setLocalRepository(localRepository); + request.setRemoteRepositories(artifactRepositories); + artifactResolver.resolve(request); + return artifact.getFile(); + } + + private static <T> T notNull(T value, String msg) throws MojoFailureException { + if (value == null) { + throw new MojoFailureException(msg); + } + return value; } } diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java new file mode 100644 index 0000000..a4393fe --- /dev/null +++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java @@ -0,0 +1,49 @@ +package japicmp.maven; + +public class Parameter { + private String accessModifier; + private String packagesToInclude; + private String packagesToExclude; + private String onlyModified; + private String breakBuildOnModifications; + + public String getAccessModifier() { + return accessModifier; + } + + public void setAccessModifier(String accessModifier) { + this.accessModifier = accessModifier; + } + + public String getPackagesToInclude() { + return packagesToInclude; + } + + public void setPackagesToInclude(String packagesToInclude) { + this.packagesToInclude = packagesToInclude; + } + + public String getPackagesToExclude() { + return packagesToExclude; + } + + public void setPackagesToExclude(String packagesToExclude) { + this.packagesToExclude = packagesToExclude; + } + + public String getOnlyModified() { + return onlyModified; + } + + public void setOnlyModified(String onlyModified) { + this.onlyModified = onlyModified; + } + + public String getBreakBuildOnModifications() { + return breakBuildOnModifications; + } + + public void setBreakBuildOnModifications(String breakBuildOnModifications) { + this.breakBuildOnModifications = breakBuildOnModifications; + } +} diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java index 3be2982..14d5342 100644 --- a/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java +++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java @@ -2,6 +2,7 @@ package japicmp.maven; public class Version { private Dependency dependency; + private ConfigurationFile file; public Dependency getDependency() { return dependency; @@ -10,4 +11,12 @@ public class Version { public void setDependency(Dependency dependency) { this.dependency = dependency; } + + public ConfigurationFile getFile() { + return file; + } + + public void setFile(ConfigurationFile file) { + this.file = file; + } } diff --git a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml index 1cdc6e7..553ed80 100644 --- a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml +++ b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml @@ -40,6 +40,13 @@ <version>${project.version}</version> </dependency> </newVersion> + <parameter> + <onlyModified>true</onlyModified> + <packagesToInclude>*</packagesToInclude> + <packagesToExclude>*</packagesToExclude> + <accessModifier>public</accessModifier> + <breakBuildOnModifications>false</breakBuildOnModifications> + </parameter> </configuration> <executions> <execution> diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml index c1c68f4..db78d5b 100644 --- a/japicmp-testbase/japicmp-test-v2/pom.xml +++ b/japicmp-testbase/japicmp-test-v2/pom.xml @@ -8,4 +8,36 @@ </parent> <artifactId>japicmp-test-v2</artifactId> + + <build> + <plugins> + <plugin> + <groupId>japicmp</groupId> + <artifactId>japicmp-maven-plugin</artifactId> + <version>${project.version}</version> + <configuration> + <oldVersion> + <dependency> + <groupId>japicmp</groupId> + <artifactId>japicmp-test-v1</artifactId> + <version>${project.version}</version> + </dependency> + </oldVersion> + <newVersion> + <file> + <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path> + </file> + </newVersion> + </configuration> + <executions> + <execution> + <phase>verify</phase> + <goals> + <goal>cmp</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> \ No newline at end of file diff --git a/japicmp/pom.xml b/japicmp/pom.xml index 0d78636..bd8c70e 100644 --- a/japicmp/pom.xml +++ b/japicmp/pom.xml @@ -30,10 +30,6 @@ <build> <plugins> <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>cobertura-maven-plugin</artifactId> - </plugin> - <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> diff --git a/japicmp/src/main/java/japicmp/cli/CliParser.java b/japicmp/src/main/java/japicmp/cli/CliParser.java index e5f87e3..ba8c4c2 100644 --- a/japicmp/src/main/java/japicmp/cli/CliParser.java +++ b/japicmp/src/main/java/japicmp/cli/CliParser.java @@ -2,7 +2,6 @@ package japicmp.cli; import com.google.common.base.Optional; import japicmp.model.AccessModifier; -import japicmp.config.PackageFilter; import japicmp.config.Options; import japicmp.exception.JApiCmpException; import japicmp.util.StringArrayEnumeration; @@ -35,32 +34,16 @@ public class CliParser { AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase()); options.setAccessModifier(accessModifier); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, listOfAccessModifiers())); + throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, AccessModifier.listOfAccessModifier())); } } if ("-i".equals(arg)) { String packagesIncludeArg = getOptionWithArgument("-i", sae); - String[] parts = packagesIncludeArg.split(","); - for (String part : parts) { - part = part.trim(); - try { - options.getPackagesInclude().add(new PackageFilter(part)); - } catch (Exception e) { - throw new IllegalArgumentException(String.format("Wrong syntax for include option '%s': %s", part, e.getMessage())); - } - } + options.addPackageIncludeFromArgument(packagesIncludeArg); } if ("-e".equals(arg)) { String packagesExcludeArg = getOptionWithArgument("-e", sae); - String[] parts = packagesExcludeArg.split(","); - for (String part : parts) { - part = part.trim(); - try { - options.getPackagesInclude().add(new PackageFilter(part)); - } catch (Exception e) { - throw new IllegalArgumentException(String.format("Wrong syntax for exclude option '%s': %s", part, e.getMessage())); - } - } + options.addPackagesExcludeFromArgument(packagesExcludeArg); } if ("-h".equals(arg)) { printHelp(); @@ -103,17 +86,4 @@ public class CliParser { throw new IllegalArgumentException(String.format("Missing argument for option %s.", option)); } } - - private String listOfAccessModifiers() { - StringBuilder sb = new StringBuilder(); - int i = 0; - for (AccessModifier am : AccessModifier.values()) { - if (i > 0) { - sb.append(","); - } - sb.append(am.toString()); - i++; - } - return sb.toString(); - } } diff --git a/japicmp/src/main/java/japicmp/config/Options.java b/japicmp/src/main/java/japicmp/config/Options.java index 8cfc975..3efdf52 100644 --- a/japicmp/src/main/java/japicmp/config/Options.java +++ b/japicmp/src/main/java/japicmp/config/Options.java @@ -62,4 +62,28 @@ public class Options { public List<PackageFilter> getPackagesExclude() { return packagesExclude; } + + public void addPackagesExcludeFromArgument(String packagesExcludeArg) { + String[] parts = packagesExcludeArg.split(","); + for (String part : parts) { + part = part.trim(); + try { + getPackagesExclude().add(new PackageFilter(part)); + } catch (Exception e) { + throw new IllegalArgumentException(String.format("Wrong syntax for package include option '%s': %s", part, e.getMessage())); + } + } + } + + public void addPackageIncludeFromArgument(String packagesIncludeArg) { + String[] parts = packagesIncludeArg.split(","); + for (String part : parts) { + part = part.trim(); + try { + getPackagesInclude().add(new PackageFilter(part)); + } catch (Exception e) { + throw new IllegalArgumentException(String.format("Wrong syntax for package exclude option '%s': %s", part, e.getMessage())); + } + } + } } diff --git a/japicmp/src/main/java/japicmp/model/AccessModifier.java b/japicmp/src/main/java/japicmp/model/AccessModifier.java index d9422f2..8454fa2 100644 --- a/japicmp/src/main/java/japicmp/model/AccessModifier.java +++ b/japicmp/src/main/java/japicmp/model/AccessModifier.java @@ -12,4 +12,17 @@ public enum AccessModifier { public int getLevel() { return level; } + + public static String listOfAccessModifier() { + StringBuilder sb = new StringBuilder(); + int i = 0; + for (AccessModifier am : AccessModifier.values()) { + if (i > 0) { + sb.append(","); + } + sb.append(am.toString()); + i++; + } + return sb.toString(); + } } diff --git a/pom.xml b/pom.xml index 5c6f160..d4f6967 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,8 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <github.account>siom79</github.account> <cloudbees.account>siom79</cloudbees.account> + <java.source>1.7</java.source> + <java.target>1.7</java.target> </properties> <modules> @@ -36,8 +38,8 @@ <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> - <source>1.5</source> - <target>1.5</target> + <source>${java.source}</source> + <target>${java.target}</target> </configuration> </plugin> <plugin> @@ -55,9 +57,6 @@ <goals> <goal>jar</goal> </goals> - <configuration> - <additionalparam>-Xdoclint:none</additionalparam> - </configuration> </execution> </executions> </plugin>