ning / maven-duplicate-finder-plugin Goto Github PK
View Code? Open in Web Editor NEWMaven plugin to find duplicate classes or resources
License: Apache License 2.0
Maven plugin to find duplicate classes or resources
License: Apache License 2.0
Hi first of all thanks for the plugin. I have used several methods before but I believe this is the way to go (Having maven actually stop until you resolve the duplicated classes issues)
I have a question about the below warning. Shouldn't this situation being just ignored? As far as I understand META-INF should be used only to stamp information related to the building process so if that is the case then the below is a false positive I would say. Am I wrong?
[WARNING] Found duplicate resources in [org.bouncycastle:bcmail-jdk14:1.38,org.bouncycastle:bcprov-jdk14:1.38,org.bouncycastle:bctsp-jdk14:1.38] :
[WARNING] META-INF/BCKEY.DSA
[WARNING] META-INF/BCKEY.SF
Thanks!
-Nestor
When running this command:
mvn -X duplicate-finder:check
I get this exception:
[INFO] Checking compile classpath
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.461s
[INFO] Finished at: Fri Oct 03 12:48:03 CEST 2014
[INFO] Final Memory: 9M/212M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default-cli) on project servidor: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default-cli) on project servidor: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.lang.NullPointerException
at com.ning.maven.plugins.duplicatefinder.Exception.containsResource(Exception.java:192)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.isExceptedResource(DuplicateFinderMojo.java:344)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkForDuplicateResources(DuplicateFinderMojo.java:275)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkClasspath(DuplicateFinderMojo.java:211)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkCompileClasspath(DuplicateFinderMojo.java:168)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.execute(DuplicateFinderMojo.java:145)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 20 more
My plugin config:
<plugin>
<groupId>com.ning.maven.plugins</groupId>
<artifactId>maven-duplicate-finder-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<failBuildInCaseOfConflict>true</failBuildInCaseOfConflict>
<exceptions>
<exception>
<conflictingDependencies>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
</conflictingDependencies>
<classes>
<class>org.w3c.dom.html.HTMLDOMImplementation</class>
</classes>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.3.04</version>
</dependency>
</conflictingDependencies>
<packages>
<package>org.w3c.dom</package>
</packages>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>javax.xml.stream</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.3.04</version>
</dependency>
</conflictingDependencies>
<classes>
<class>javax.xml.XMLConstants</class>
<class>javax.xml.namespace.NamespaceContext</class>
<class>javax.xml.namespace.QName</class>
</classes>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.osgi</artifactId>
<version>3.8.0.v20120529-1548</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.osgi.services</artifactId>
<version>3.3.100.v20120522-1822</version>
</dependency>
</conflictingDependencies>
<packages>
<package>org.osgi.service.log</package>
</packages>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
</conflictingDependencies>
<classes>
<class>org.apache.commons.collections.ArrayStack</class>
<class>org.apache.commons.collections.Buffer</class>
<class>org.apache.commons.collections.BufferUnderflowException</class>
<class>org.apache.commons.collections.FastHashMap</class>
</classes>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>org.apache.excalibur.components</groupId>
<artifactId>excalibur-sourceresolve</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.excalibur.components</groupId>
<artifactId>excalibur-store</artifactId>
<version>2.2.1</version>
</dependency>
</conflictingDependencies>
<resources>
<resource>services.list</resource>
</resources>
</exception>
<!--exception>
<conflictingDependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
</dependency>
</conflictingDependencies>
<packages>
<package>javax.servlet</package>
</packages>
</exception-->
</exceptions>
<ignoredResources>
<ignoredResource>META-INF/ECLIPSE.*</ignoredResource>
<ignoredResource>META-INF/BCKEY.*</ignoredResource>
<ignoredResource>about.*</ignoredResource>
<ignoredResource>plugin\.xml</ignoredResource>
<ignoredResource>plugin\.properties</ignoredResource>
<ignoredResource>version\.properties</ignoredResource>
<ignoredResource>.*\.png</ignoredResource>
<ignoredResource>.*\.gif</ignoredResource>
<ignoredResource>build\.properties</ignoredResource>
<ignoredResource>\.api_description</ignoredResource>
<ignoredResource>\.options</ignoredResource>
</ignoredResources>
</configuration>
</plugin>
Using
It's strange that you're using LOG4J in Maven plugin. Instead, you should use Maven Log for that.
With your current configuration the plugin conflicts with the project. It uses the default log4j.properties
file, which has some application-specific configuration inside. Please, either switch to Maven Log or let users configure the path of LOG4J configuration file path.
Hello,
I encounter the following NullPointerException.
Can you help me please ?
[WARNING] Found duplicate classes in [jdom:jdom:1.0,org.jdom:jdom:1.1] :
...
...
...
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default) on project test-ear: Execution default of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default) on project test-ear: Execution default of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:167)
at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:163)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 13 more
Caused by: java.lang.NullPointerException
at com.ning.maven.plugins.duplicatefinder.Exception.containsResource(Exception.java:192)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.isExceptedResource(DuplicateFinderMojo.java:344)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkForDuplicateResources(DuplicateFinderMojo.java:275)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkClasspath(DuplicateFinderMojo.java:211)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkCompileClasspath(DuplicateFinderMojo.java:168)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.execute(DuplicateFinderMojo.java:145)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 14 more
When signing artifacts, packages which appear in more than one artifact can cause runtime problems, for instance if the package appears in a signed jar, and also in an exploded war directory (unsigned).
It would be useful to detect duplicate packages, even when there are no duplicate classes/resources.
There already exists the ability to globally ignore resources. The ability to do that with classes as well would be handy.
Maven complains when running a parallel build (using mvn -T
):
[WARNING] *****************************************************************
[WARNING] * Your build is requesting parallel execution, but project *
[WARNING] * contains the following plugin(s) that are not marked as *
[WARNING] * @threadSafe to support parallel building. *
[WARNING] * While this /may/ work fine, please look for plugin updates *
[WARNING] * and/or request plugins be made thread-safe. *
[WARNING] * If reporting an issue, report it against the plugin in *
[WARNING] * question, not against maven-core *
[WARNING] *****************************************************************
[WARNING] The following plugins are not marked @threadSafe in airlift:
[WARNING] com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4
[WARNING] *****************************************************************
Would be great if you document checkTestClasspath
option in README
. I had to review the source code in order to find this useful option. Thanks.
Not so much of an issue but more of a doubt / clarification:
I have a project that contain 2 duplicate class files that are being reported by the plugin as being "duplicate and different".
The classes were both built from the same source file, but one JAR was built for JDK 1.4 while the other was build for JDK 1.6. (so one class file has majorversion 48 while the other has majorversion 50).
Obviously these 2 class files will have different SHA256 outputs, but should such cases be detected as "duplicate and equal" or "duplicate and different" ?
On the one hand they could be considered identical, as they were derived from the same source. On the other hand they're obviously different as they were built for a different JDK version runtime.
For my use-case it would be handy to consider them as "duplicate and equal". Perhaps this could also be made configurable through a config property on the plugin ?
Would love to hear your thoughts on this.
All the version numbers in the README are out of date. In some places, even 1.0.0 is still used.
Please update them all to the latest version 1.0.3.
Is there a reason why the dot (.) notation is used for classes but the slash (/) notation is used for resources ?
[WARNING] Found duplicate and different classes in [be.ecs:srv.customer.service1:0.0.1-SNAPSHOT,be.ecs:srv.customer.service2:0.0.1-SNAPSHOT] :
[WARNING] be.ecs.service.duplicate.DuplicateDifferentContent
[WARNING] Found duplicate and different resources in [be.ecs:srv.customer.service1:0.0.1-SNAPSHOT,be.ecs:srv.customer.service2:0.0.1-SNAPSHOT] :
[WARNING] be/ecs/duplicate_different_content.properties
@Parameter(property = "mdupfind.check.skip", defaultValue = "false")
private boolean skip;
or via doc:
/** @parameter expression="${mdupfind.check.skip}" default-value="false" */
private boolean skip;
@@
Then you can skip the execution by:
mvn install -P mdupfind.check.skip=true
or in a profile:
<profile>
<id>foo</id>
<properties>
<mdupfind.check.skip>true</mdupfind.check.skip>
</properties>
</profile>
On the presto source tree:
MAVEN_OPTS="-Duser.country=TR -Duser.language=tr" mvn com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.8:check
vs.
MAVEN_OPTS="-Duser.country=US -Duser.language=en" mvn com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.8:check
I posed a question on StackOverflow about how to detect when multiple resource folders contain a resource of the same name, within the same project. I thought that sort of thing was out of scope for this plugin, but this answer claims it's exactly what this plugin is supposed to detect. So, I'm filing this issue to find out who's right, and if khmarbaise, then get this fixed. :)
A simple test case looks like this (reproduced from the SO question):
$ cat pom.xml
<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>com.stackoverflow.mattmchenry</groupId>
<artifactId>mvn-dups</artifactId>
<version>1.0</version>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/resources_es</directory>
</resource>
</resources>
</build>
</project>
$ find src/ -type f
src/main/resources/Strings_es.properties
src/main/resources/Strings.properties
src/main/resources_es/Strings_es.properties
$ mvn com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.stackoverflow.mattmchenry:mvn-dups:jar:1.0
[INFO] task-segment: [com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check]
[INFO] ------------------------------------------------------------------------
[INFO] [duplicate-finder:check {execution: default-cli}]
[INFO] Checking compile classpath
[INFO] Checking runtime classpath
[INFO] Checking test classpath
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Thu Nov 22 22:44:40 EST 2012
[INFO] Final Memory: 7M/88M
[INFO] ------------------------------------------------------------------------```
Duplicate and different resources are not detected in case duplicate (but equal) resources exist.
resourceEqualConflictsByArtifactNames get returned (return stmt) before resourceDifferentConflictsByArtifactNames get a chance to output.
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.3:check (default-cli) on project http-client-experimental: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.3:check failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.3:check (default-cli) on project http-client-experimental: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.3:check failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.3:check failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.lang.NullPointerException
at com.ning.maven.plugins.duplicatefinder.Exception.isForArtifacts(Exception.java:119)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.getExceptionsFor(DuplicateFinderMojo.java:357)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.isExceptedResource(DuplicateFinderMojo.java:339)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkForDuplicateResources(DuplicateFinderMojo.java:275)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkClasspath(DuplicateFinderMojo.java:211)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.checkTestClasspath(DuplicateFinderMojo.java:199)
at com.ning.maven.plugins.duplicatefinder.DuplicateFinderMojo.execute(DuplicateFinderMojo.java:151)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 20 more
I have a project that depends on projects with duplicities in compile class path. When packaging, I use dependency:copy-dependencies to create a directory with all the JARs, and I'd like to check only those (and this is not the same as runtime classpath).
limit to current project classes (i.e., exclude all 3rd party dependencies which is the case most of the time)
There are several jars that duplicates the contents of rt.jar in java 7. How can I instruct the plugin to search on rt.jar?
It would be nive if this plugin would be available via Maven Central...Take a look here:
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
The README writes about a version 1.0.3 but the POM is 1.0.0-SNAPSHOT which means a little documentation issue.
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check (default) on project cb-core: Execution default o
f goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check (
default) on project cb-core: Execution default of goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
The javadoc executable has become stricter compared to previous versions:
"unknown tag" has become an error
"reference not found" has become an error
This means that generating the javadocs can suddenly fail only by upgrading the JDK
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.