【问题标题】:maven jar option, creating a additional jar during buildmaven jar 选项,在构建期间创建一个额外的 jar
【发布时间】:2013-08-05 13:41:24
【问题描述】:

在尝试创建 maven 构建时,我需要资源 jar、javadoc jar 和编译类 jar,这可以通过现有插件轻松实现。

但我在src/main/resources/xsd 文件夹下确实有 XSD,我更喜欢在构建过程中在不同的 jar 中创建它,这可能吗?

提前感谢您的帮助

【问题讨论】:

    标签: maven maven-2 maven-3 maven-plugin


    【解决方案1】:

    您可以使用自定义插件或 assembly 向您的 maven 构建添加额外的人工制品。程序集允许您将任何资源组定义为新的工件。这个新工件将成为您现有工件的“附件”,就像可以附加源 jar 一样。

    在创建程序集时,您需要定义一个描述符并将其放在src/main/assembly/xsd.xml 之类的地方

    描述符看起来像:

    <assembly>
       <id>xsd</id>
       <formats>
          <format>zip</format>
       </formats>
       <fileSets>
          <fileSet>
               <directory>src/main/resources/xsd</directory>
               <includes>
                   <include>*.xsd</include>
               </includes>
          </fileSet>
      </fileSets>
    </assembly>
    

    第二部分是程序集插件配置,如下所示:

      <build>   
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
              <descriptors>
                <descriptor>src/main/assembly/xsd.xml</descriptor>
              </descriptors>           
            </configuration>
            <executions>
                  <execution>
                  <id>make-xsd-zip</id> <!-- this is used for inheritance merges -->
                  <phase>package</phase> <!-- bind to the packaging phase -->
                  <goals>
                    <goal>single</goal>
                  </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    

    此配置应为您提供一个名为:&lt;artifactid&gt;-&lt;version&gt;-&lt;assemblyid&gt;.zip

    【讨论】:

      【解决方案2】:

      嗯,MAVEN 本身不支持来自单个 pom.xml 的多个工件。但是您可以创建另一个只有pom 的空项目来创建另一个jar

      codebase
          |- pom.xml
          |- src
          |- xsdJar
              |- pom.xml
          |- [other stuff]
      

      现在,在xsdJar\pom.xml

      <project>
        ...
        <build>
          <plugins>
            ...
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                <includes>
                  <include>../src/main/resources/xsd/*</include>
                </includes>
              </configuration>
            </plugin>
            ...
          </plugins>
        </build>
        ...
      </project>
      

      另外,在你的主 pom.xml 中调用上述模块

      <modules>
        <module>xsdJar</module>
      </modules>
      

      【讨论】:

        猜你喜欢
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        相关资源
        最近更新 更多