5

我对 Maven Javadoc 插件和自定义 doclet 有疑问。

我正在使用 maven-javadoc-plugin v 2.10.1和一个自定义 doclet,它基本上是一个 maven jar 项目。

我还有一个settings.xmlcentral存储库定义为自定义工件的。

问题是,每当我运行 maven-javadoc-plugin 时,它都会尝试从 解析自定义 doclet 的依赖关系https://repo.maven.apache.org/maven2,而 doclet 本身则从自定义工件中解析。
调试输出也很奇怪,它说central存储库是https://repo.maven.apache.org/maven2snapshot存储库是我自定义的快照工件。
它的锁定就像 maven-jar-plugin 覆盖centralsettings.xml.

我怎样才能告诉maven-jar-plugin不要覆盖我的central存储库。

调试日志如下所示:

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
Maven home: PATH TO MAVEN
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: PATH TO JRE
Default locale: de_DE, platform encoding: UTF-8
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
[DEBUG] Reading global settings from PATH TO MAVEN\conf\settings.xml
[DEBUG] Reading user settings from PATH TO USER\.m2\settings.xml
[DEBUG] Using local repository at PATH TO LOCAL REPOSITORY
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for PATH TO LOCAL REPOSITORY
[DEBUG] Skipped remote request for PARENT POM AND VERSION/maven-metadata.xml, locally installed metadata up-to-date.
[DEBUG] Extension realms for project ARTIFACT AND VERSION: (none)
[DEBUG] Looking up lifecyle mappings for packaging war from ClassRealm[plexus.core, parent: null]
[DEBUG] Extension realms for project ARTITFACT AND VERSION: (none)
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null]
[DEBUG] Extension realms for project PARENT POM AND VERSION: (none)
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null]
[DEBUG] Extension realms for project PARENT POM AND VERSION: (none)
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null]
[DEBUG] Extension realms for project PARENT POM AND VERSION: (none)
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null]
[DEBUG] Resolving plugin version for org.apache.maven.plugins:maven-jar-plugin
[DEBUG] Could not find metadata org.apache.maven.plugins:maven-jar-plugin/maven-metadata.xml in local (PATH TO LOCAL REPOSITORY)
[DEBUG] Skipped remote request for org.apache.maven.plugins:maven-jar-plugin/maven-metadata.xml, locally cached metadata up-to-date.
[DEBUG] Failure to find org.apache.maven.plugins:maven-jar-plugin/maven-metadata.xml in PATH TO CUSTOM PLUGIN SNAPSHOT REPOSITORY was cached in the local repository, resolution will not be reattempted until the update interval of snapshots has elapsed or updates are forced
[DEBUG] Resolved plugin version for org.apache.maven.plugins:maven-jar-plugin to 2.6 from repository central (PATH TO CUSTOM PLUGIN RELEASE REPOSITORY, default, releases)
[DEBUG] Resolving plugin prefix javadoc from [org.apache.maven.plugins, org.codehaus.mojo]
[DEBUG] Resolved plugin prefix javadoc to org.apache.maven.plugins:maven-javadoc-plugin from POM ARTIFACT AND VERSION
[DEBUG] === REACTOR BUILD PLAN ================================================
[DEBUG] Project: ARTIFACT AND VERSION
[DEBUG] Tasks:   [javadoc:javadoc]
[DEBUG] Style:   Regular
[DEBUG] =======================================================================
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building ARTIFACT AND VERSION
[INFO] ------------------------------------------------------------------------
[DEBUG] Resolving plugin prefix javadoc from [org.apache.maven.plugins, org.codehaus.mojo]
[DEBUG] Resolved plugin prefix javadoc to org.apache.maven.plugins:maven-javadoc-plugin from POM ARTIFACT AND VERSION
[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
[DEBUG] === PROJECT BUILD PLAN ================================================
[DEBUG] Project:       ARTIFACT AND VERSION
[DEBUG] Dependencies (collect): []
[DEBUG] Dependencies (resolve): [compile]
[DEBUG] Repositories (dependencies): [central (PATH TO CUSTOM LIBS RELEASE REPOSITORY, default, releases), snapshots (PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY, default, releases+snapshots)]
[DEBUG] Repositories (plugins)     : [central (PATH TO CUSTOM PLUGIN RELEASE REPOSITORY, default, releases), snapshots (PATH TO CUSTOM PLUGIN SNAPSHOT REPOSITORY, default, releases+snapshots)]
[DEBUG] --- init fork of ARTIFACT AND VERSION for org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc (default-cli) ---
[DEBUG] Dependencies (collect): []
[DEBUG] Dependencies (resolve): []
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.codehaus.mojo:build-helper-maven-plugin:1.9.1:add-source (add-source)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <sources>
    <source>PATH TO ARTIFACT\target/generated-sources</source>
  </sources>
  <project default-value="${project}"/>
</configuration>
[DEBUG] --- exit fork of ARTIFACT AND VERSION for org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc (default-cli) ---
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc (default-cli)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <additionalparam>-Xdoclint:none </additionalparam>
  <doclet>PACKAGE AND CLASS OF CUSTOM DOCLET</doclet>
  <docletArtifact>${docletArtifact}</docletArtifact>
  <docletArtifacts>
    <docletArtifact>
      <groupId>CUSTOM DOCLET GROUP</groupId>
      <artifactId>CUSTOM DOCLET ARTIFACT</artifactId>
      <version>CUSTOM DOCLET VERSION</version>
    </docletArtifact>${docletArtifacts}</docletArtifacts>
  <docletPath>${docletPath}</docletPath>
 </configuration>
[DEBUG] =======================================================================
[INFO] 
[INFO] >>> maven-javadoc-plugin:2.10.1:javadoc (default-cli) > generate-sources @ ARTIFACT ID>>>
[INFO] 
[INFO] --- build-helper-maven-plugin:1.9.1:add-source (add-source) @ ARTIFACT ID---
[DEBUG] Created new class realm maven.api
[DEBUG] Importing foreign packages into class realm maven.api
[DEBUG] Configuring mojo 'org.codehaus.mojo:build-helper-maven-plugin:1.9.1:add-source' with basic configurator -->
[DEBUG]   (f) sources = [PATH TO ARTIFACT\target\generated-sources]
[DEBUG]   (f) project = MavenProject: ARTITFACT AND VERSION @ PATH TO ARTIFACT\pom.xml
[DEBUG] -- end configuration --
[INFO] Source directory: PATH TO ARTIFACT\target\generated-sources added.
[INFO] 
[INFO] <<< maven-javadoc-plugin:2.10.1:javadoc (default-cli) < generate-sources @ ARTIFACT ID <<<
[DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=15, ConflictMarker.nodeCount=148, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=78, ConflictIdSorter.conflictIdCycleCount=2, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=126, DefaultDependencyCollector.collectTime=437, DefaultDependencyCollector.transformTime=15}
[DEBUG] ARTIFACT AND VERSION
[DEBUG]    org.jvnet.jax-ws-commons.spring:jaxws-spring:jar:1.9:compile
[DEBUG]       javax.xml.ws:jaxws-api:jar:2.2.8:compile
[DEBUG]          javax.xml.bind:jaxb-api:jar:2.2.7-facets-1.0.5:compile (version managed from 2.2.4 by PARENT POM AND VERSION)
[DEBUG]          javax.xml.soap:saaj-api:jar:1.3.4:compile
[DEBUG]          org.glassfish:javax.annotation:jar:3.1.1:runtime
[DEBUG]       javax.servlet:servlet-api:jar:2.5:compile
[DEBUG]       org.springframework:spring-core:jar:4.1.6.RELEASE:compile (version managed from 3.2.3.RELEASE by PARENT POM AND VERSION)
[DEBUG]          commons-logging:commons-logging:jar:1.2:compile
[DEBUG]       org.springframework:spring-beans:jar:4.1.6.RELEASE:compile (version managed from 3.2.3.RELEASE by PARENT POM AND VERSION)
[DEBUG]       org.springframework:spring-context:jar:4.1.6.RELEASE:compile (version managed from 3.2.3.RELEASE by PARENT POM AND VERSION)
[DEBUG]          org.springframework:spring-aop:jar:4.1.6.RELEASE:compile
[DEBUG]             aopalliance:aopalliance:jar:1.0:compile
[DEBUG]          org.springframework:spring-expression:jar:4.1.6.RELEASE:compile
[DEBUG]       org.springframework:spring-web:jar:4.1.6.RELEASE:compile (version managed from 3.2.3.RELEASE by PARENT POM AND VERSION)
[DEBUG]       org.apache.xbean:xbean-spring:jar:3.14:compile
[DEBUG]       javax.jws:jsr181-api:jar:1.0-MR1:compile
[DEBUG]    com.sun.xml.ws:policy:jar:2.5:compile
[DEBUG]       javax.xml.stream:stax-api:jar:1.0-2:compile
[DEBUG]       com.sun.xml.txw2:txw2:jar:20110809:compile
[DEBUG]          relaxngDatatype:relaxngDatatype:jar:20020414:compile
[DEBUG]       com.sun.istack:istack-commons-runtime:jar:2.4:compile
[DEBUG]       org.codehaus.woodstox:woodstox-core-asl:jar:4.1.1:runtime
[DEBUG]          org.codehaus.woodstox:stax2-api:jar:3.1.1:runtime
[DEBUG]    org.glassfish.gmbal:gmbal-api-only:jar:3.2.0-b003:compile
[DEBUG]       org.glassfish.external:management-api:jar:3.0.0-b012:compile
[DEBUG]    org.springframework:spring-orm:jar:4.1.6.RELEASE:compile
[DEBUG]       org.springframework:spring-jdbc:jar:4.1.6.RELEASE:compile
[DEBUG]    org.springframework:spring-tx:jar:4.1.6.RELEASE:compile
[DEBUG]    com.sun.xml.bind:jaxb-impl:jar:2.2.6-facets-1.3.1:compile
[DEBUG]       com.sun.xml.ws:jaxws-tools:jar:2.2.6:compile
[DEBUG]          com.sun.xml.ws:jaxws-rt:jar:2.2.8:compile (version managed from 2.2.6 by PARENT POM AND VERSION)
[DEBUG]             javax.xml.soap:javax.xml.soap-api:jar:1.3.5:compile
[DEBUG]             javax.annotation:javax.annotation-api:jar:1.2-b03:compile
[DEBUG]             com.sun.xml.bind:jaxb-core:jar:2.2.7:compile
[DEBUG]             org.jvnet.mimepull:mimepull:jar:1.9.1:compile
[DEBUG]             com.sun.xml.fastinfoset:FastInfoset:jar:1.2.12:compile
[DEBUG]             org.glassfish.ha:ha-api:jar:3.1.9:compile
[DEBUG]             com.sun.xml.messaging.saaj:saaj-impl:jar:1.3.20:compile
[DEBUG]             com.sun.org.apache.xml.internal:resolver:jar:20050927:compile
[DEBUG]          com.sun.xml.bind:jaxb-xjc:jar:2.2.5:compile
[DEBUG]       net.java.loci:jsr308-all:jar:1.1.2:compile
[DEBUG]       javax.validation:validation-api:jar:1.1.0.Final:compile
[DEBUG]    oracle:ojdbc6:jar:11.2.0.4.0:provided
[DEBUG]    org.eclipse.persistence:eclipselink:jar:2.5.1:provided
[DEBUG]       org.eclipse.persistence:javax.persistence:jar:2.1.0:provided
[DEBUG]       org.eclipse.persistence:commonj.sdo:jar:2.1.1:provided
[DEBUG]    com.sun.xml.stream.buffer:streambuffer:jar:1.4:compile
[DEBUG]       org.jvnet.staxex:stax-ex:jar:1.6:compile
[DEBUG]       javax.activation:activation:jar:1.1:compile
[DEBUG]    commons-dbcp:commons-dbcp:jar:1.4:compile
[DEBUG]       commons-pool:commons-pool:jar:1.5.4:compile
[DEBUG]    org.apache.commons:commons-lang3:jar:3.3.2:compile
[DEBUG]    org.springframework:spring-test:jar:4.1.6.RELEASE:test
[DEBUG]    com.github.springtestdbunit:spring-test-dbunit:jar:1.2.1:test
[DEBUG]    org.dbunit:dbunit:jar:2.5.1:test
[DEBUG]       org.slf4j:slf4j-api:jar:1.7.12:test
[DEBUG]       commons-collections:commons-collections:jar:3.2.1:test
[DEBUG]       org.apache.poi:poi-ooxml:jar:3.11:test
[DEBUG]          org.apache.poi:poi:jar:3.11:test
[DEBUG]             commons-codec:commons-codec:jar:1.9:test
[DEBUG]          org.apache.poi:poi-ooxml-schemas:jar:3.11:test
[DEBUG]             org.apache.xmlbeans:xmlbeans:jar:2.6.0:test
[DEBUG]                stax:stax-api:jar:1.0.1:test
[DEBUG]    junit:junit:jar:4.12:test
[DEBUG]       org.hamcrest:hamcrest-core:jar:1.3:test
[DEBUG]    pl.pragmatists:JUnitParams:jar:1.0.4:test
[DEBUG]    org.mockito:mockito-all:jar:1.10.19:test
[DEBUG]    org.reflections:reflections:jar:0.9.9:compile
[DEBUG]       com.google.guava:guava:jar:15.0:compile
[DEBUG]       org.javassist:javassist:jar:3.18.2-GA:compile
[DEBUG]       com.google.code.findbugs:annotations:jar:2.0.1:compile
[DEBUG]   CUSTOM DEPENDENCY OF ARTIFACT:compile
[DEBUG]       log4j:log4j:jar:1.2.16:compile
[DEBUG]       org.aspectj:aspectjrt:jar:1.8.5:compile
[DEBUG]       org.aspectj:aspectjweaver:jar:1.8.5:compile
[DEBUG]      CUSTOM DEPENDENCY OF ARTIFACT:compile
[DEBUG]         CUSTOM DEPENDENCY OF ARTIFACT:compile
[DEBUG]          CUSTOM DEPENDENCY OF ARTIFACT:compile
[INFO] 
[INFO] --- maven-javadoc-plugin:2.10.1:javadoc (default-cli) @ ARTITFACT ID---
 [DEBUG] Configuring mojo org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-javadoc-plugin:2.10.1, parent: sun.misc.Launcher$AppClassLoader@4e25154f]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc' with basic configurator -->
[DEBUG]   (f) additionalparam = -Xdoclint:none
[DEBUG]   (f) doclet = CUSTOM DOCLECT
[DEBUG]   (f) docletArtifact = groupId = 'null'
artifactId = 'null'
version = 'null'
[DEBUG]   (s) groupId = GROUP OF CUSTOM DOCLET
[DEBUG]   (s) artifactId = ARTIFACT ID OF CUSTOM DOCLET
[DEBUG]   (s) version = VERSION OF CUSTOM DOCLET
[DEBUG]   (f) docletArtifacts = [groupId = 'GROUP OF CUSTOM DOCLET'
artifactId = 'ARTIFACT ID OF CUSTOM DOCLET'
version = 'VERSION OF CUSTOM DOCLET']
[DEBUG]   (f) doctitle = ARTIFACT ID AND VERSION
[DEBUG]   (f) javadocDirectory = PATH TO ARTIFACT\src\main\javadoc
[DEBUG]   (f) javadocOptionsDir = PATH TO ARTIFACT\target\javadoc-bundle-options
[DEBUG]   (f) localRepository =       id: local
      url: file:///PATH TO LOCAL REPOSITORY
   layout: default
snapshots: [enabled => true, update => always]
 releases: [enabled => true, update => always]
[DEBUG]   (f) project = MavenProject: ARTIFACT AND VERSION @ PATH TO ARTIFACT\pom.xml
[DEBUG]   (f) reactorProjects = [MavenProject: ARTIFACT AND VERSION @ PATH TO ARTIFACT\pom.xml]
[DEBUG]   (f) remoteRepositories = [      id: central
      url: PATH TO CUSTOM LIBS RELEASE REPOSITORY
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => daily]
,       id: snapshots
      url: PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => true, update => daily]
]
[DEBUG]   (s) reportOutputDirectory = PATH TO ARTIFACT\target\site\apidocs
[DEBUG]   (f) sourceDependencyCacheDir = PATH TO ARTIFACT\target\distro-javadoc-sources
[DEBUG]   (f) windowtitle = ARTIFACT AND VERSION
[DEBUG] -- end configuration --
[DEBUG] Could not find metadata CUSTOM DOCLET AND VERSION/maven-metadata.xml in local (PATH TO LOCAL REPOSITORY)
[DEBUG] Using transporter WagonTransporter with priority -1.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[INFO] Downloading: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET/maven-metadata.xml
[INFO] Downloaded: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET/maven-metadata.xml (770 B at 1.0 KB/sec)
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\PATH TO CUSTOM DOCLET\resolver-status.properties
[DEBUG] Using transporter WagonTransporter with priority -1.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[INFO] Downloading: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET.pom
[INFO] Downloaded: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET.pom (3 KB at 88.8 KB/sec)
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\PATH TO CUSTOM DOCLET\_remote.repositories
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\PATH TO CUSTOM DOCLET.pom.lastUpdated
[DEBUG] Could not find metadata CUSTOM DOCLET ARTIFACT AND VERSION/maven-metadata.xml in local (PATH TO LOCAL REPOSITORY)
[DEBUG] Skipped remote request for CUSTOM DOCLET ARTIFACT AND VERSION/maven-metadata.xml, already updated during this session.
[DEBUG] Using transporter WagonTransporter with priority -1.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for PATH TO CUSTOM LIBS RELEASE REPOSITORY
[INFO] Downloading: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET.jar
[INFO] Downloaded: PATH TO CUSTOM LIBS RELEASE REPOSITORY/PATH TO CUSTOM DOCLET.jar (47 KB at 1512.5 KB/sec)
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\PATH TO CUSTOM DOCLET\_remote.repositories
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\PATH TO CUSTOM DOCLET.jar.lastUpdated
[DEBUG] CUSTOM DOCLET ARTIFACT AND VERSION (selected for null)
[DEBUG]   jdk.tools:jdk.tools:jar:1.8.0_51:system (selected for system)
[DEBUG]   org.apache.commons:commons-lang3:jar:3.3.2:compile (selected for compile)
[DEBUG]   javax.xml.bind:jaxb-api:jar:2.2.7-facets-1.0.5:compile (selected for compile)
[DEBUG]     javax.xml.bind:jaxb-api:jar:2.2.7:compile (removed - nearer found: 2.2.7-facets-1.0.5)
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://repo.maven.apache.org/maven2 <b><-- ???</b>
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://repo.maven.apache.org/maven2 <br><--- ???</b>
[INFO] Downloading: https://repo.maven.apache.org/maven2/com/bitplan/mediawiki-japi/0.0.4/mediawiki-japi-0.0.4.pom
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\com\bitplan\mediawiki-japi\0.0.4\mediawiki-japi-0.0.4.pom.lastUpdated
[DEBUG] Using transporter WagonTransporter with priority -1.0 for PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY
[INFO] Downloading: PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY/com/bitplan/mediawiki-japi/0.0.4/mediawiki-japi-0.0.4.pom
[DEBUG] Writing tracking file PATH TO LOCAL REPOSITORY\com\bitplan\mediawiki-japi\0.0.4\mediawiki-japi-0.0.4.pom.lastUpdated
[DEBUG]   com.google.code.gson:gson:jar:2.3.1:compile (selected for compile)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.242 s
[INFO] Finished at: 2016-01-28T08:29:00+01:00
[INFO] Final Memory: 22M/218M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc (default-cli) on project ARTIFACT ID: An error has occurred in JavaDocs report generation: Unable to resolve artifact:groupId = 'GROUP OF CUSTOM DOCLET'
[ERROR] artifactId = 'ARTIFACT OF CUSTOM DOCLET'
[ERROR] version = 'VERSION OF CUSTOM DOCLET': Unable to get dependency information for com.bitplan:mediawiki-japi:jar:0.0.4: Failed to retrieve POM for com.bitplan:mediawiki-japi:jar:0.0.4: Could not transfer artifact com.bitplan:mediawiki-japi:pom:0.0.4 from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/185.31.17.215] failed: Connection timed out: connect
[ERROR] com.bitplan:mediawiki-japi:jar:0.0.4
[ERROR] 
[ERROR] from the specified remote repositories:
[ERROR] central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false),
[ERROR] snapshots (PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY, releases=true, snapshots=true)
[ERROR] Path to dependency:
[ERROR] 1) CUSTOM DOCLET ARTIFACT AND VERSION
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:javadoc (default-cli) on project ARTIFACT ID: An error has occurred in JavaDocs report generation: Unable to resolve artifact:groupId = 'GROUP OF CUSTOM DOCLET'
artifactId = 'ARTIFACT ID OF CUSTOM DOCLET'
version = 'VERSION OF CUSTOM DOCLET'
Caused by: org.apache.maven.plugin.MojoExecutionException: An error has occurred in JavaDocs report generation: Unable to resolve artifact:groupId = 'GROUP OF CUSTOM DOCLET'
artifactId = 'ARTIFACT ID OF CUSTOM DOCLET'
version = 'VERSION OF CUSTOM DOCLET'
Caused by: org.apache.maven.reporting.MavenReportException: Unable to resolve artifact:groupId = 'GROUP OF CUSTOM DOCLET'
artifactId = 'ARTIFACT ID OF CUSTOM DOCLET'
version = 'VERSION OF CUSTOM DOCLET'
Caused by: org.apache.maven.artifact.resolver.ArtifactResolutionException: Unable to get dependency information for com.bitplan:mediawiki-japi:jar:0.0.4: Failed to retrieve POM for com.bitplan:mediawiki-japi:jar:0.0.4: Could not transfer artifact com.bitplan:mediawiki-japi:pom:0.0.4 from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/185.31.17.215] failed: Connection timed out: connect
  com.bitplan:mediawiki-japi:jar:0.0.4
from the specified remote repositories:
  central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false),
  snapshots (PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY, releases=true, snapshots=true)
Path to dependency: 
    1) CUSTOM DOCLET ARTIFACT AND VERSION

我必须剪掉一些 Stacktraces,并希望剪掉不必要的调试日志,因为我只有 30000 个字符。

这是带有 maven-javadoc-plugin 配置的父 POM

<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>XXX</groupId>
    <artifactId>XXX</artifactId>
    <version>XXXX</version>

    <packaging>pom</packaging>

    <name>Parent POM</name>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.10.1</version>
                    <configuration>
                        <show>public</show>
                        <excludePackageNames>*.ws.jaxws.*</excludePackageNames>
                        <additionalparam>-Xdoclint:none</additionalparam>
                    </configuration>
                    <executions>
                        <execution>
                            <id>default-cli</id>
                            <goals>
                                <goal>javadoc</goal>
                            </goals>
                            <configuration>
                                <docletArtifacts>
                                    <docletArtifact>
                                        <groupId>GROUP ID OF CUSTOM DOCLET <groupId>
                                        <artifactId>ARTIFACT ID OF CUSTOM DOCLET</artifactId>
                                        <version>VERSION OF CUSTOM DOCLET</version>
                                    </docletArtifact>
                                </docletArtifacts>
                                <doclet>PACKAGE AND CLASS OF CUSTOM DOCLET</doclet>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <dependencyManagement>
        MULTIPLE DEPENDENCIES WITH VERSION 
    </dependencyManagement>
</project>

更新:这是我的settings.xml

<profiles>
        <profile>
            <id>artifactory</id>
            <repositories>
                <repository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>libs-release</name>
                    <url>PATH TO CUSTOM REPOSITORY LIBS RELEASE</url>
                </repository>
                <repository>
                    <snapshots/>
                    <id>snapshots</id>
                    <name>libs-snapshot</name>
                    <url>PATH TO CUSTOM REPOSITORY LIBS SNAPSHOT</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>plugins-release</name>
                    <url>PATH TO CUSTOM REPOSITORY PLUGINS RELEASE</url>
                </pluginRepository>
                <pluginRepository>
                    <snapshots/>
                    <id>snapshots</id>
                    <name>plugins-snapshot</name>
                    <url>PATH TO CUSTOM REPOSITORY PLUGINS SNAPSHOT</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>local</id>
            <properties>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </properties>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>artifactory</activeProfile>
        <activeProfile>local</activeProfile>
    </activeProfiles>

我希望有人可以帮助我解决这个问题。

带着敬意

4

1 回答 1

5

可能的故障排除路径:

Maven 设置(在您最近的更新/编辑之后,这已经被选中)

为您的自定义 Maven 存储库提供配置的settings.xml文件可能仅在其repositories部分(用于依赖中介的存储库)中指向它,而不是在该pluginRepositories部分(用于插件/报告中介和插件依赖中介的存储库)。

官方 Maven 文档中,pluginRepositories应该指定:

用于发现插件的远程存储库列表。

如果没有这个额外的配置,Maven 将尝试解析插件对插件默认存储库的依赖,该存储库来自Maven 超级 POM。查看它,插件的默认存储库实际上是您的构建指向的(https://repo.maven.apache.org/maven2):

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <name>Central Repository</name>
        <url>http://repo.maven.apache.org/maven2</url> <!-- HERE YOU ARE!-->
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
</pluginRepositories>

如果您想查看 Maven 构建使用的有效设置,则可以运行以下命令并检查其输出:

mvn help:effective-pom

目标将effective-pom作为构建输出的一部分打印整个合并的 pom 和使用的设置。从中,您应该能够看到pluginRepositories您的构建有效地使用了哪个。

注意:该-Doutput参数可能有助于将其重定向到外部文件。


神器配置

如果不是这种情况(因此,配置是一致的,并且在两个部分都指向您的自定义 Maven 存储库),您应该检查自定义存储库是否配置正确:

  • Artifactory 带有库、插件和快照的默认存储库
  • Artifactory 可以配置为使用虚拟存储库,聚合后面的几个真实存储库
  • 您的自定义库可能已上传到未包含在服务插件依赖项的虚拟存储库中的 lib 存储库

从您提供的输出片段中:

[DEBUG] Repositories (dependencies): [central (PATH TO CUSTOM LIBS RELEASE REPOSITORY, default, releases), snapshots (PATH TO CUSTOM LIBS SNAPSHOT REPOSITORY, default, releases+snapshots)]
[DEBUG] Repositories (plugins)     : [central (PATH TO CUSTOM PLUGIN RELEASE REPOSITORY, default, releases), snapshots (PATH TO CUSTOM PLUGIN SNAPSHOT REPOSITORY, default, releases+snapshots)]

实际上可能是这样的。

这是一个常见的错误配置(我过去也遇到过这堵墙)。实际上,在大多数情况下,您甚至不需要为插件依赖项使用不同的存储库,并且只有一个用于已发布库的虚拟存储库和一个用于快照库的虚拟存储库会更容易、更清晰,同时提供依赖项和插件工件。因此,只区分已发布和快照,而不区分依赖项和插件(或者,如果您真的想保留当前配置,您可以将 libs 存储库添加为虚拟插件存储库的一部分)。

一个简单且无害的测试是:

  • 在 Artifactory 中配置一个新的虚拟存储库
  • 新的虚拟存储库将包括库和插件存储库
  • 在 Maven 设置中配置新的虚拟存储库(在两个存储库部分中)
  • 再次运行 Maven 构建

使用插件依赖项 (在您的最新评论之后:宾果游戏!,这解决了问题)

您应该将所需的依赖项添加为插件依赖项,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
        <show>public</show>
        <excludePackageNames>*.ws.jaxws.*</excludePackageNames>
        <additionalparam>-Xdoclint:none</additionalparam>
    </configuration>
    <executions>
        <execution>
            <id>default-cli</id>
            <goals>
                <goal>javadoc</goal>
            </goals>
            <configuration>
                <docletArtifacts>
                    <docletArtifact>
                        <groupId>GROUP ID OF CUSTOM DOCLET</groupId>
                        <artifactId>ARTIFACT ID OF CUSTOM DOCLET</artifactId>
                        <version>VERSION OF CUSTOM DOCLET</version>
                    </docletArtifact>
                </docletArtifacts>
                <doclet>PACKAGE AND CLASS OF CUSTOM DOCLET</doclet>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>GROUP ID OF CUSTOM DOCLET</groupId>
            <artifactId>ARTIFACT ID OF CUSTOM DOCLET</artifactId>
            <version>VERSION OF CUSTOM DOCLET</version>
        </dependency>
    </dependencies>
</plugin>

请注意相关dependencies部分底部的plugin部分。插件不解析项目依赖,因此如果需要外部库,您需要将它们声明为插件依赖。

但是,Javadoc Maven 插件还提供了一个additionalDependencies,它在其特定范围内复制了上述(标准)功能。

向 javadoc 类路径添加可选依赖项的能力

但是,根据您的反馈,标准方法成功了。

编辑(02/02/2016 9:37)
如果您还需要报告依赖项(基于您的最新评论),那么报告部分确实不会像插件那样预见插件依赖项。这是已知问题

但是,建议使用两种解决方法:

  • 将依赖项设置为 build [extension] ( https://maven.apache.org/pom.html#Extensions )(请参见下面的代码段),尽管不推荐

    <build>
       <extensions>
           <extension>
               <groupId>GROUP ID OF CUSTOM DOCLET</groupId>
               <artifactId>ARTIFACT ID OF CUSTOM DOCLET</artifactId>
               <version>VERSION OF CUSTOM DOCLET</version>
           </extension>
       </extensions>
    </build>
    

    官方文档

    扩展是要在此构建中使用的工件列表。它们将包含在正在运行的构建的类路径中。

  • 设置插件的依赖项(如上面已经建议的)应该应用于插件和报告机制,正如在这个 Sonatype 帖子中所描述的那样

    有一种方法可以通过报告实现这一点。在下面的示例中,我从插件块中删除了执行并将插件添加为报告。在报告中使用插件时,似乎继承了依赖关系。

    此处也记录了类似的方法。

编辑(03/02/2016)(在您的最新评论之后:宾果游戏!,使用构建扩展解决了这个问题)


使用 docletPath 配置元素

查看Maven Javadoc 插件的官方文档docletPath,配置元素应提供外部文件(依赖项)的路径,该路径与docletPath官方javadoc命令的预期选项一致。

查看官方文档,路径方法优于Maven依赖方法。因此,您的配置可以调整如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
        <show>public</show>
        <excludePackageNames>*.ws.jaxws.*</excludePackageNames>
        <additionalparam>-Xdoclint:none</additionalparam>
    </configuration>
    <executions>
        <execution>
            <id>default-cli</id>
            <goals>
                <goal>javadoc</goal>
            </goals>
            <configuration>
                <docletArtifacts>
                    <docletArtifact>
                        <groupId>GROUP ID OF CUSTOM DOCLET</groupId>
                        <artifactId>ARTIFACT ID OF CUSTOM DOCLET</artifactId>
                        <version>VERSION OF CUSTOM DOCLET</version>
                    </docletArtifact>
                </docletArtifacts>
                <doclet>PACKAGE AND CLASS OF CUSTOM DOCLET</doclet>
                <docletPath>path_to_jar/fileName.jar</docletPath>
            </configuration>
        </execution>
    </executions>
</plugin>

注意docletPath元素,一个用于所有 docletArtifacts。根据文档:

指定 doclet 起始类文件(使用 -doclet 选项指定)及其依赖的任何 jar 文件的路径。docletPath 可以包含多个路径,方法是用冒号 (:) 或分号 (;) 分隔它们。

一个官方示例还展示了如何使用它:我尝试了它,在我们内部公司 Artifactory 上配置了依赖项,并且没有指定任何 jar 的任何路径,并且成功解决了附加依赖项,因此 - 再次 - 我还要检查 Artifactory 的配置以及是否可以从插件存储库访问您的自定义 doclet 库。

于 2016-02-01T10:15:40.907 回答