自定义程序集描述符以创建具有依赖项的jar

时间:2010-05-26 11:19:14

标签: maven-2 maven-assembly-plugin

我想从Maven制作的项目中生成.jar应用程序。

我在Eclipse工作,我做了:运行/ Maven程序集:程序集

这是错误消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-4:assembly (default-cli) on project FeelIndexer: Error reading assemblies: No assembly descriptors found.

这是我的assamble.xml

<assembly>
  <id>exe</id>
  <formats>
        <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
        <dependencySet>
          <outputDirectory></outputDirectory>
          <outputFileNameMapping></outputFileNameMapping>
          <unpack>true</unpack>
          <scope>runtime</scope>
          <includes>
            <include>commons-lang:commons-lang</include>
            <include>commons-cli:commons-cli</include>
          </includes>
        </dependencySet>
  </dependencySets>
  <fileSets>
        <fileSet>
          <directory>target/classes</directory>
          <outputDirectory></outputDirectory>
        </fileSet>
  </fileSets>
</assembly>

我认为我必须添加其他东西来添加muy项目的依赖项,但我不知道该怎么做!! 建议??

更新:在我的assembly.xml下面

<assembly>
      <id>exe</id>
      <formats>
        <format>jar</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
        <dependencySet>
          <outputDirectory></outputDirectory>
          <outputFileNameMapping></outputFileNameMapping>
          <unpack>true</unpack>
          <scope>runtime</scope>
          <includes>
            <include>commons-lang:commons-lang</include>
            <include>commons-cli:commons-cli</include>
          </includes>
        </dependencySet>
      </dependencySets>
      <fileSets>
        <fileSet>
          <directory>target/classes</directory>
          <outputDirectory></outputDirectory>
        </fileSet>
      </fileSets>
    <plugins>
          <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
          </plugin>
    </plugins>
    </assembly>

我在哪里可以找到我的maven-assembly-plugin配置?

我尝试了两个你告诉我的选项:

  • 使用预定义的assembly.xml
  • 插入插件

我有同样的结果:s

1 个答案:

答案 0 :(得分:3)

要使用自定义程序集描述符,必须在插件配置中声明它:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
        [...]
      </plugin>
   </plugins>
</project>

顺便说一句,预定义的程序集jar-with-dependencies不适合您的需求吗?我没有看到与您的自定义程序集有太大差异,我的建议是使用预定义的程序集:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        [...]
     </plugin>
  </plugins>
</project>

更新:我不明白你在做什么,我不确定你是否了解程序集插件的工作原理。

  1. Maven Assembly Plugin配置(上面的示例,由<plugin>括起)位于pom.xml,而不是汇编描述符。
  2. 如果您将Maven Assembly Plugin配置为使用src/main/assembly/src.xml作为程序集描述符,则该文件必须存在(因此要么重命名程序集描述符或更改配置,以上示例只是...示例)。 / LI>
  3. 从我看到的,您不需要自定义程序集描述符。你可以简单地使用我在初始答案中给出的第二个片段(把它放在你的pom.xml中)。