2014-05-09 44 views
0

我用Maven构建一个多模块项目,其中一个模块代表了其他模块的阴影版本:包括合成文件的javadoc神器在Maven构建


| - 基地
| - 基地阴影

base模块包含我的所有源文件,但与依赖我想导入到我自己的命名空间。此阴影模块由我的base-shaded模块描述,该模块基本上只包含一个POM,该POM配置对base和Maven Shade插件的依赖关系。

这工作正常。 Shade插件包含所有依赖关系并创建一个阴影工件,包括源工件。但是,我错过了不是由Shade插件创建的javadoc工件。因此,我试图复制base模块的javadoc工件。但是,release:release目标忽略了这些妨碍我部署到Maven Central的工件。不过,我还是设法将这些文件复制并包含在安装目标中。

在构建中包含非组合文件是否有规范的方法?我开始认为我可能是错误的方法。

这是我的base-shaded POM的插件配置。对不起,这是这么多,但最终,它是Maven的XML:

<!-- Shade dependencies --> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>${version.plugin.shade}</version> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>shade</goal> 
      </goals> 
     <configuration> 
     <shadedArtifactAttached>false</shadedArtifactAttached> 
     <createDependencyReducedPom>true</createDependencyReducedPom> 
     <dependencyReducedPomLocation> 
      ${project.build.directory}/dependency-reduced-pom.xml 
     </dependencyReducedPomLocation> 
     <createSourcesJar>true</createSourcesJar> 
     <shadeSourcesContent>true</shadeSourcesContent> 
     <relocations> 
      <relocation> 
      <pattern>${shade.source}</pattern> 
      <shadedPattern>${shade.target}</shadedPattern> 
      </relocation> 
     </relocations> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
<!-- Copy dependency version's javadoc artifacts --> 
<plugin> 
    <groupId>com.github.goldin</groupId> 
    <artifactId>copy-maven-plugin</artifactId> 
    <version>${version.plugin.copy}</version> 
    <executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>copy</goal> 
     </goals> 
     <configuration> 
      <resources> 
      <resource> 
       <targetPath>${project.build.directory}</targetPath> 
       <file> 
       ${project.basedir}/../base/target/base-${project.version}-javadoc.jar 
       </file> 
       <destFileName>base-${project.version}-javadoc.jar</destFileName> 
      </resource> 
      <resource> 
      <targetPath>${project.build.directory}</targetPath> 
      <file> 
       ${project.basedir}/../base/target/base-${project.version}-javadoc.jar.asc 
      </file> 
      <destFileName>base-shaded-${project.version}-javadoc.jar.asc</destFileName> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
<!-- Because the javadoc files are copied manually, they must be installed manually as well --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>install-javadoc</id> 
     <phase>install</phase> 
     <goals> 
     <goal>install-file</goal> 
     </goals> 
     <configuration> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>${project.artifactId}</artifactId> 
     <version>${project.version}</version> 
     <packaging>jar</packaging> 
     <classifier>javadoc</classifier> 
     <file>${build.directory}/base-shaded-${project.version}-javadoc.jar</file> 
     </configuration> 
    </execution> 
    <execution> 
     <id>install-javadoc-asc</id> 
     <phase>install</phase> 
     <goals> 
     <goal>install-file</goal> 
     </goals> 
     <configuration> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>${project.artifactId}</artifactId> 
     <version>${project.version}</version> 
     <packaging>jar.asc</packaging> 
     <classifier>javadoc</classifier> 
     <file>${build.directory}/base-shaded-${project.version}-javadoc.jar.asc</file> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

回答

相关问题