java - Maven:带有依赖项的 jar + JavaDoc

标签 java maven maven-assembly-plugin

我有一个项目,它对其他 Jars 有一些依赖。我目前使用 JavaDoc 插件和 Assembly 插件生成项目的 .zip,其中包含我的 Jar、依赖项 Jars 以及 javadoc。

但是,我想将事情归结为 .zip 中只有一个 Jar 以及相关的 JavaDoc。我知道程序集插件 + jar-with-dependencies 是我的 friend ,但是我如何解决这个问题,以便我可以将包含此 jar 的 .zip 与我的 JavaDoc 一起打包?

我的 pom 的相关部分如下:

  <properties>
    <assemblyJar>${project.build.finalName}.jar</assemblyJar>
    <assemblyJwd>${project.build.finalName}-jar-with-dependencies.jar</assemblyJwd>
    <java.code.version>1.4</java.code.version>
  </properties>

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2.1</version> <!-- 2.3 might be needed -->
    <configuration>
      <descriptors>
        <descriptor>src/assembly/dist-jwd.xml</descriptor>
      </descriptors>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
      <id>make-jwd</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2.1</version> <!-- 2.3 might be needed -->
    <configuration>
      <descriptors>
        <descriptor>src/assembly/dist.xml</descriptor>
      </descriptors>
    </configuration>
    <executions>
      <execution>
      <id>make-zip</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      </execution>
    </executions>
  </plugin>

dist-jwd.xml 的相关部分:

<id>dist-jwd</id>

  <includeBaseDirectory>true</includeBaseDirectory>

  <files>
    <file>
      <fileMode>444</fileMode>
      <source>target/${assemblyJar}</source>
      <outputDirectory></outputDirectory>
    </file>
  </files>

  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <scope>compile</scope>
      <excludes>
        <exclude>javax.servlet:servlet-api</exclude>
      </excludes>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>
  </dependencySets>

以及 dist.xml 的相关部分:

<id>dist-zip</id>

  <formats>
    <format>zip</format>
  </formats>

  <includeBaseDirectory>true</includeBaseDirectory>

  <fileSets>
    <fileSet>
      <fileMode>444</fileMode>
      <directory>target/site/apidocs</directory>
      <outputDirectory>javadoc</outputDirectory>
    </fileSet>
  </fileSets>

  <files>
    <file>
      <fileMode>444</fileMode>
      <source>target/${assemblyJwd}</source>
      <outputDirectory></outputDirectory>
    </file>
  </files>

目前我收到错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-jwd) on project deviceinsight-api-java: Failed to create assembly: Error adding file to archive: /Users/barmistead/Mercurial/deviceinsight-print/target/deviceinsight-api-java-3.1.16-1-SNAPSHOT-jar-with-dependencies.jar isn't a file. -> [Help 1]

我猜这可能是先有鸡还是先有蛋的问题,所以如果 Maven 没有一个优雅的解决方案,那么我将不得不手动执行一些操作。但是,我认为我想做的事情很常见,所以我认为会有一种简单的方法。

最佳答案

我最终放弃并在 Maven 之后运行 .sh 脚本来做我想做的事情。

Unix 来救援!

关于java - Maven:带有依赖项的 jar + JavaDoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186392/

相关文章:

maven - 未调用 LoggingFilter - 给出 HTTP 404 - 未找到错误

java - Intellij 依赖问题 - java.lang.NoClassDefFoundError

maven-2 - 自从切换到 <lineEnding>unix</lineEnding> 后,我的程序集中出现了奇怪的文件

maven-2 - Maven Assembly Plugin - 安装创建的程序集

java - 取消选择 JRadioButton

java - 为什么我不能通过 Java 访问远程数据库?

spring - Maven 过滤依赖项中存储的资源

maven - 如何排除 Maven 继承的子依赖项中的父 pom 依赖项?

java - 一种在没有警告的情况下创建匹配的泛型类对的方法?

java - 从另一个 jar 添加组件到 JPanel