我有一个父 Maven POM看起来像这样(oss-parent可以看到here):
<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>
<parent>
<groupId>com.blockwithme</groupId>
<artifactId>oss-parent</artifactId>
<version>0.0.5</version>
</parent>
<groupId>com.blockwithme</groupId>
<artifactId>xtend-contrib-parent</artifactId>
<version>0.0.3</version>
<packaging>pom</packaging>
<inceptionYear>2013</inceptionYear>
<name>Xtend Contrib Parent</name>
<dependencies>
<dependency>
<groupId>org.eclipse.xtend</groupId>
<artifactId>org.eclipse.xtend.lib</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.xtend</groupId>
<artifactId>org.eclipse.xtend.core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.xtend</groupId>
<artifactId>xtend-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
</plugin>
</plugins>
</build>
<modules>
<module>base</module>
<module>examples</module>
</modules>
</project>
使用看起来像这样的子“基础”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>
<parent>
<groupId>com.blockwithme</groupId>
<artifactId>xtend-contrib-parent</artifactId>
<version>0.0.3</version>
</parent>
<artifactId>xtend-contrib-base</artifactId>
</project>
它在本地仓库中创建并安装子Jar。但我也想安装源和/或javadoc。所以我将它添加到父 POM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
但是,如果我这样做,源和javadoc安装,但编译后的代码jar 停止安装,这对我没有意义。 Maven给出了这个警告:
[INFO] No primary artifact to install, installing attached artifacts instead.
如果我没有尝试安装源代码,那么不会出现。添加maven-jar-plugin插件没有帮助。也没有添加“&lt; packaging&gt; jar&lt; / packaging&gt;”给孩子POM。
答案 0 :(得分:1)
我的猜测是它正在尝试在parentPom中执行此操作。我不会在你的parentPom中定义常见的插件。在您的parentPom中,我将在POM的pluginManagement部分(而不是插件部分)中定义插件(及其版本)。然后,在每个子节点中,说明使用哪些插件(没有声明中的版本)。这将提供更多控制。
答案 1 :(得分:1)
您可以尝试将源插件的目标从jar
更改为jar-no-fork
。将source:jar
目标作为生命周期的一部分,Maven将重新运行生成源及其前身的所有目标。我的假设是在该循环中有一个干净的执行,擦除主jar文件。相反,jar-no-fork
将不会再次运行绑定目标。
插件配置应如此
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>