如何从maven项目中导出接口作为新工件

时间:2013-06-06 07:14:12

标签: java maven

我有一个创建JCA连接器(.rar文件)的maven项目。现在要在另一个项目中使用这个连接器我构建这个东西,我想导入连接器的接口。

我可以以某种方式向连接器pom.xml添加构建目标,它只使用连接器项目中的接口(比如连接器接口)创建一个新的maven工件吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

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的{​​{1}}中添加:

connector-impl

如果您使用maven发布插件,请将其添加到父pom:

<dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>connector-impl</artifactId>
        <version>${project.version}</version>
</dependency>

这样,maven只会在你发布时要求版本1。

答案 1 :(得分:1)

尽管@WimDeblauwe建议采用最佳实践,但最好按照自己的方式进行,但还有另一种方法可以实现这一目标。可以使用assembly plugin来执行此操作。通常它意味着将整个项目打包在一个jar中,但它也可以用来创建类的子集并从中创建一个jar。

虽然这可能有点棘手。为此,您可能需要创建自定义描述符并引用this documentation以查看如何格式化描述符文件。以下是如何指向自定义描述符的文档中的示例:

<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。