【发布时间】:2013-08-05 13:41:24
【问题描述】:
在尝试创建 maven 构建时,我需要资源 jar、javadoc jar 和编译类 jar,这可以通过现有插件轻松实现。
但我在src/main/resources/xsd 文件夹下确实有 XSD,我更喜欢在构建过程中在不同的 jar 中创建它,这可能吗?
提前感谢您的帮助
【问题讨论】:
标签: maven maven-2 maven-3 maven-plugin
在尝试创建 maven 构建时,我需要资源 jar、javadoc jar 和编译类 jar,这可以通过现有插件轻松实现。
但我在src/main/resources/xsd 文件夹下确实有 XSD,我更喜欢在构建过程中在不同的 jar 中创建它,这可能吗?
提前感谢您的帮助
【问题讨论】:
标签: maven maven-2 maven-3 maven-plugin
您可以使用自定义插件或 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>
此配置应为您提供一个名为:<artifactid>-<version>-<assemblyid>.zip
【讨论】:
嗯,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>
【讨论】: