如何预先构建在Maven中用作依赖项的jar
我创建了完美工作的POM.xml文件,直到我删除了第三方jar,这依赖于我的项目。 问题是该jar缺失,但它是使用maven-antrun-plugin创建的。 这是创建jar的插件的源代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<tasks>
<property environment="env" />
<property name="appname" value="hellojavaworld" />
<echoproperties />
<exec dir="" executable="respawn.exe" searchpath="true">
<arg value="${basedir}srcaion${appname}.app" />
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
进一步在POM.xml文件中是这样的:
<dependency>
<groupId>hellojavaworld</groupId>
<artifactId>hellojavaworld</artifactId>
<scope>system</scope>
<systemPath>${basedir}srcaionhellojavaworld.binhellojavaworld.jar</systemPath>
<version>1.0</version>
<optional>true</optional>
</dependency>
如果hellojavaworld.jar是手动编译的,一切都可以正常工作,但如果jar不存在,就会出现缺失工件的错误。
问题是如何编写POM.xml来创建在一个POM.xml文件中用作依赖项的jar,而无需手动干预?
谢谢
一种解决方案是使用多模块构建。 SonaType书有一章专门讨论这个问题。
基本上你会需要三个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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>parentHoldsItTogether</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>Multi Chapter Simple Parent Project</name>
<modules>
<module>hellojavaworld</module>
<module>thingThatNeedsHellojavaworld</module>
</modules>
</project>
hellojavaworld的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>parentHoldsItTogether</artifactId>
<version>1.0</version>
</parent>
<artifactId>hellojavaworld</artifactId>
<packaging>jar</packaging>
</project>
图书馆消费者的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>parentHoldsItTogether</artifactId>
<version>1.0</version>
</parent>
<artifactId>thingThatNeedsHellojavaworld</artifactId>
<packaging>???</packaging>
<dependencies>
<dependency>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>hellojavaworld</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
你会像这样组织目录结构:
your_project_folder/
pom.xml <-- the parent POM
hellojavaworld/
pom.xml
src/main/java
thingThatNeedsHellojavaworld/
pom.xml
src/main/java
创建一个多模块maven项目:参见Maven的第6章。 第一个模块是你hellojavaworld,第二个模块是依赖于hellojavaworld的应用程序。
pom.xml中:
<project>
...
<modules>
<module>hellojavaworld</module>
<module>application</module>
</modules>
...
应用程序/ pom.xml的
...
<dependencies>
<dependency>
<groupId>hellojavaworld</groupId>
<artifactId>hellojavaworld</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
...
链接地址: http://www.djcxy.com/p/29663.html
上一篇: How to pre build jar which is used as dependency in Maven