【问题标题】:Generating a jar with the source code of the Maven project with the Maven directory structure?用Maven目录结构的Maven项目的源代码生成jar?
【发布时间】:2012-05-03 01:54:49
【问题描述】:

我有一个使用 Maven 构建的 web 应用程序。但是我想用正确的maven目录结构生成一个带有maven项目的JAR。我尝试了this,但它丢弃了 Maven 目录结构(src/main/java 等)。我的目标是将这个 jar 分发给其他人,以便他们可以解压缩并运行 mvn eclipse:eclipse 并开始处理他们的新 Web 项目。

【问题讨论】:

  • 您确定这是分发项目的最佳方式吗?
  • 是的,它是一个模板项目。
  • 也许你可以从中建立一个原型,实际上原型就是为此目的。

标签: java maven maven-2 build


【解决方案1】:

使用 maven-assembly-plugin。做你想做的事非常简单。

这是插件的定义:

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2.1</version>
                    <executions>
                        <execution>
                            <id>make-distribution</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                <descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
                                </descriptors>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

这是您的 src/main/assembly/assembly.xml:

<assembly>

        <id>my-project</id>

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

        <includeBaseDirectory>true</includeBaseDirectory>

        <fileSets>
                <fileSet>
                        <directory>${basedir}</directory>
                        <includes>
                                <include>**/**</include>
                        </includes>
                        <excludes>
                                <exclude>**/**</exclude>
                        </excludes>
                </fileSet>
        </fileSets>

</assembly>

我还没有测试过,但大致是你应该设置的方式。

【讨论】:

  • 另一个烦人的问题是无论你做什么它都包含基本目录。 /myapp/src/main/java/ 等。我只想要 src/main/java
  • Karl-Heinz 的解决方案也应该有效,这只是一个描述性较差的示例。如果您知道自己在做什么,则可以删除 assembly.xml。这只是一个简单的例子。
  • 检查此页面maven.apache.org/plugins/maven-assembly-plugin/assembly.html 并根据您的需要修复文件集。你可以定义一个outputDirectory
【解决方案2】:

为什么不使用maven-assembly-plugin..的现有描述符。

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
  <descriptorRefs>
    <descriptorRef>src</descriptorRef>
  </descriptorRefs>
</configuratio

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多