我有一个创建 JCA 连接器(.rar 文件)的 maven 项目。现在要在我构建这个东西的另一个项目中使用这个连接器,我想导入连接器的接口。
我可以以某种方式将构建目标添加到连接器 pom.xml,它仅使用连接器项目中的接口(比如说连接器接口)创建一个新的 Maven 工件?
谢谢!
Maven 有一个严格的规则,即 1 个项目 -> 1 个工件。我建议拆分您的项目:
connector
+ pom.xml
++ connector-interfaces
+++ pom.xml
++ connector-impl
+++ pom.xml
连接器的 pom.xml 将包含 2 个模块:
<modules>
<module>connector-interfaces</module>
<module>connector-impl</module>
</modules>
在模块connector-impl
中,您将需要添加对connector-interfaces
. pom.xml
在中添加这个connector-impl
:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>connector-impl</artifactId>
<version>${project.version}</version>
</dependency>
如果您使用 maven 发布插件,请将其添加到父 pom:
<project>
<build>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
</plugins>
</build>
</project>
这样,maven 只会在您发布时询问版本 1。
尽管@WimDeblauwe 提出了一种最佳做法,并且最好按照他的方式进行操作,但还有另一种方法可以实现这一点。有一个程序集插件可用于执行此操作。通常它意味着将你的整个项目打包在一个 jar 中,但它也可以用来制作一个类的子集并从中制作一个 jar。
不过这可能有点棘手。为此,您可能需要创建一个自定义描述符并参考此文档以了解如何格式化您的描述符文件。这是文档中有关如何指向自定义描述符的示例:
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/src.xml</descriptor>
</descriptors>
</configuration>
[...]
</project>
在该src.xml
文件中,您需要<excludes>
除接口之外的所有类并设置<includeDependencies>
为 false。