1

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

我在 Eclipse 中工作,我做了:run as/Maven assembly:assembly

这是错误消息:

[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

4

1 回答 1

4

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

<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 程序集插件配置(上面的示例,用 括起来<plugin>)在 中pom.xml,而不是在程序集描述符中。
  2. 如果您将 Maven 程序集插件配置为src/main/assembly/src.xml用作程序集描述符,则该文件必须存在(因此,重命名您的程序集描述符或更改配置,上面的示例只是……一个示例)。
  3. 据我所知,您不需要自定义程序集描述符。您可以简单地使用我在初始答案中给出的第二个片段(将其放入您的pom.xml.
于 2010-05-26T11:24:08.933 回答