【发布时间】:2020-11-27 17:49:15
【问题描述】:
目前,我有一个 pom.xml,它在构建时会从 mvnrepository 收集依赖 Javadoc jar 并将它们解压缩到特定文件夹中:
<build>
<finalName>${parent.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-javadoc-jars</id>
<goals>
<goal>unpack</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>groupid1</groupId>
<artifactId>artifactid1</artifactId>
<version>1.0.0</version>
<classifier>javadoc</classifier>
<outputDirectory>${project.build.directory}/dependency-javadoc/artifactid1-1.0.0</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>groupid2</groupId>
<artifactId>artifactid2</artifactId>
<version>2.0.0</version>
<classifier>javadoc</classifier>
<outputDirectory>${project.build.directory}/dependency-javadoc/artifactid2-2.0.0</outputDirectory>
</artifactItem>
...
</artifactItems>
</configuration>
</plugin>
</plugins>
</build>
问题是,如果我没有为每个工件指定输出目录字段,javadoc 将全部解压到一个文件夹中(这也可针对解压目标进行配置 - https://maven.apache.org/plugins-archives/maven-dependency-plugin-2.6/unpack-mojo.html),我希望它们清楚结构在文件夹中。所以我为每个 artifactItem 添加了一个目录条目。但是,我必须手动编写文件夹名称。有没有办法以类似于以下方式引用现有的 artifactItem 的字段:
<artifactItem>
<groupId>groupid1</groupId>
<artifactId>artifactid1</artifactId>
<version>1.0.0</version>
<classifier>javadoc</classifier>
<outputDirectory>${project.build.directory}/dependency-javadoc/${artifactItem.artifactId}-${artifactItem.version}</outputDirectory>
</artifactItem>
这样,我将能够在所有 javadoc 工件条目中复制/粘贴 outputDirectory,但它是相同的。 谢谢!
【问题讨论】:
-
为什么在构建过程中解压 javadoc?这通常由您的 IDE 完成,而 IDE 通常使用源包?
-
我正在维护一个使用开源库的项目,我必须手边有 javadoc。基本上,我们只需要为每个使用的组件提供可用的 javadoc,并且它必须在构建过程中尽可能自动化。另一种解决方案是复制 javadoc jar 而不是解压缩它们,但我想先看看它是否可以这样工作。
-
如果您的 IDE 配置正确,它将通过查看适当的库自动下载源代码/javadoc,并且在构建期间解压缩它们没有意义。让您的 IDE 完成工作stackoverflow.com/questions/31072667/…(也可以配置 Eclipse ..)
标签: java maven dependency-injection dependencies