Maven多模块和源插件:如何保持项目的原始结构?

Maven多模块和源插件:如何保持项目的原始结构?,maven,pom.xml,Maven,Pom.xml,我对Maven和Maven源插件有一个问题,即生成的zip文件(以及*-sources.jar文件)的结构与原始结构不同。这使得人们很难再次修改我们的源代码。因此,我希望得到与原始版本相同的结构 在下面,我将简要描述项目的原始结构、zip文件的结构以及*-sources.jar文件的结构。之后,我将展示两个pom.xml文件,即父pom和其中一个模块。我要求的基本上是一种方法,如何将main pom.xml添加到zip文件中,并保持模块的结构(例如,eismassim->src->main)。当

我对Maven和Maven源插件有一个问题,即生成的zip文件(以及
*-sources.jar
文件)的结构与原始结构不同。这使得人们很难再次修改我们的源代码。因此,我希望得到与原始版本相同的结构

在下面,我将简要描述项目的原始结构、zip文件的结构以及
*-sources.jar
文件的结构。之后,我将展示两个pom.xml文件,即父pom和其中一个模块。我要求的基本上是一种方法,如何将main pom.xml添加到zip文件中,并保持模块的结构(例如,eismassim->src->main)。当然,我可以添加一个bash脚本来完成这项任务,但是我认为有一个我不知道的通用解决方案

让我从总体描述开始:我在Maven中有一个多模块项目,其结构如下:

.
|-- dep.xml
|-- pom.xml
|-- documents
|-- eismassim
|   |-- dep.xml
|   |-- pom.xml
|   `-- src
|       |-- main
|       |   `-- java
|       `-- test
|           `-- java
|-- javaagents
|   |-- dep.xml
|   |-- pom.xml
|   |-- scripts
|   `-- src
|       |-- main
|       |   `-- java
|       `-- test
|           `-- java
|-- massim
|   |-- dep.xml
|   |-- pom.xml
|   |-- scripts
|   `-- src
|       `-- main
|           |-- java
|           `-- resources
|-- webapp
|   |-- pom.xml
|   |-- scripts
|   |-- src
|   |   `-- main
|   |       |-- java
|   |       |-- resources
|   |       `-- webapp
.
|-- massim-2013-1.0
|   |-- CHANGELOG
|   |-- documents
|   |-- eismassim
|   |   `-- target
|   |       |-- dependency
|   |       |   |-- eis-0.3.jar
|   |       |   `-- junit-4.8.2.jar
|   |       |-- eismassim-2.1.jar
|   |       |-- eismassim-2.1-javadoc.jar
|   |       `-- eismassim-2.1-sources.jar
|   |-- javaagents
|   |   |-- scripts
|   |   `-- target
|   |       |-- dependency
|   |       |   |-- apltk-0.1.jar
|   |       |   |-- eis-0.3.jar
|   |       |   |-- eismassim-2.1.jar
|   |       |   `-- junit-4.8.2.jar
|   |       |-- javaagents-2.1.jar
|   |       |-- javaagents-2.1-javadoc.jar
|   |       `-- javaagents-2.1-sources.jar
|   |-- massim
|   |   |-- scripts
|   |   `-- target
|   |       |-- agentcontest-2013-1.0.jar
|   |       |-- agentcontest-2013-1.0-javadoc.jar
|   |       |-- agentcontest-2013-1.0-sources.jar
|   |       `-- dependency
|   |           |-- appframework-1.03.jar
|   `-- webapp
|       |-- scripts
|       |-- target
|       |   |-- massim-javadoc.jar
|       |   |-- massim-sources.jar
|       |   `-- massim.war
生成的zip文件
massim-2013-1.0-bin.zip具有以下结构:

.
|-- dep.xml
|-- pom.xml
|-- documents
|-- eismassim
|   |-- dep.xml
|   |-- pom.xml
|   `-- src
|       |-- main
|       |   `-- java
|       `-- test
|           `-- java
|-- javaagents
|   |-- dep.xml
|   |-- pom.xml
|   |-- scripts
|   `-- src
|       |-- main
|       |   `-- java
|       `-- test
|           `-- java
|-- massim
|   |-- dep.xml
|   |-- pom.xml
|   |-- scripts
|   `-- src
|       `-- main
|           |-- java
|           `-- resources
|-- webapp
|   |-- pom.xml
|   |-- scripts
|   |-- src
|   |   `-- main
|   |       |-- java
|   |       |-- resources
|   |       `-- webapp
.
|-- massim-2013-1.0
|   |-- CHANGELOG
|   |-- documents
|   |-- eismassim
|   |   `-- target
|   |       |-- dependency
|   |       |   |-- eis-0.3.jar
|   |       |   `-- junit-4.8.2.jar
|   |       |-- eismassim-2.1.jar
|   |       |-- eismassim-2.1-javadoc.jar
|   |       `-- eismassim-2.1-sources.jar
|   |-- javaagents
|   |   |-- scripts
|   |   `-- target
|   |       |-- dependency
|   |       |   |-- apltk-0.1.jar
|   |       |   |-- eis-0.3.jar
|   |       |   |-- eismassim-2.1.jar
|   |       |   `-- junit-4.8.2.jar
|   |       |-- javaagents-2.1.jar
|   |       |-- javaagents-2.1-javadoc.jar
|   |       `-- javaagents-2.1-sources.jar
|   |-- massim
|   |   |-- scripts
|   |   `-- target
|   |       |-- agentcontest-2013-1.0.jar
|   |       |-- agentcontest-2013-1.0-javadoc.jar
|   |       |-- agentcontest-2013-1.0-sources.jar
|   |       `-- dependency
|   |           |-- appframework-1.03.jar
|   `-- webapp
|       |-- scripts
|       |-- target
|       |   |-- massim-javadoc.jar
|       |   |-- massim-sources.jar
|       |   `-- massim.war
第三,
eismassim-2.1-sources.jar的结构:

.
|-- massim
|   |-- App.java
|   |-- eis
|   `-- eismassim
|       |-- connection
|       |-- CowboysEntity.java
|       |-- Entity.java
|-- META-INF
|   `-- MANIFEST.MF
`-- pom.xml
解压缩jar文件后执行
mvn package
,结果是一个空包。因此,我必须再次为每个模块创建
src->main->java
,并将文件移动到正确的位置或手动修改pom.xml。有可能解决这个问题吗

父pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>massim</groupId>
  <artifactId>massim</artifactId>
  <version>2013-1.0</version>
  <packaging>pom</packaging>

  <name>MAPC Package</name>
  <url>http://multiagentcontest.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <modules>
    <module>massim</module>
    <module>eismassim</module>
    <module>javaagents</module>
    <module>webapp</module>
  </modules>

<build>
   <plugins>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.4.1</version>
        <executions>
          <execution>
            <id>auto-clean</id>
            <phase>initialize</phase>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
     <plugin>
       <artifactId>maven-assembly-plugin</artifactId>
       <executions>
         <execution>
           <goals>
             <goal>attached</goal>
           </goals>
           <phase>package</phase>
         </execution>
       </executions>
       <configuration>
         <descriptor>dep.xml</descriptor>
       </configuration>
     </plugin>
</plugins>
</build>

</project>

4.0.0
马西姆
马西姆
2013-1.0
聚甲醛
MAPC包
http://multiagentcontest.org
UTF-8
马西姆
艾斯马西姆
JavaAgent
网络应用
maven清洁插件
2.4.1
自动清洗
初始化
清洁的
maven汇编插件
附属的
包裹
dep.xml
对于艾斯马斯:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>massim</groupId>
  <artifactId>eismassim</artifactId>
  <version>2.1</version>
  <packaging>jar</packaging>

  <name>EISMASSim</name>
  <url>http://multiagentcontest.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>apleis</groupId>
      <artifactId>eis</artifactId>
      <version>0.3</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Main-Class>massim.eismassim.EnvironmentInterface</Main-Class>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      <configuration>
        <includePom>true</includePom>
      </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>

        <configuration>
          <quiet>true</quiet>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
         <artifactId>wagon-ssh-external</artifactId>
         <version>1.0-beta-6</version>
      </extension>
    </extensions>
  </build>

</project>

4.0.0
马西姆
艾斯马西姆
2.1
罐子
艾斯马西姆
http://multiagentcontest.org
UTF-8
朱尼特
朱尼特
4.8.2
测试
阿普莱斯
环境影响报告书
0.3
org.apache.maven.plugins
maven编译器插件
2.3.2
1.7
1.7
org.apache.maven.plugins
maven jar插件
2.2
massim.eismassim.environment接口
maven依赖插件
包裹
复制依赖项
org.apache.maven.plugins
maven源插件
2.2.1
附加来源
罐子
真的
org.apache.maven.plugins
maven javadoc插件
2.9
真的
附加javadocs
罐子
org.apache.maven.wagen
货车ssh外部
1.0-beta-6

谢谢您的帮助。

代码太多了。你能再简洁一点吗?你生成的bin.zip文件看起来很奇怪,因为你添加了看起来错误的目标文件夹。你能展示一下装配描述符吗。顺便问一下:这是一个开源项目吗?可能在GitHub上?@SteveP。对不起,我已经尽力把它简化成最重要的东西了。@khmarbaise它在GNU GPL 3下,但如果不是真的需要的话,我不想把它放到GitHub上。我的想法是使用Maven生成一个包含所有重要内容的包。无论如何,我现在在服务器上放了两个包:和。谢谢你的帮助。