0

我有以下 maven 项目(注意:maven 项目,而不是 maven 模块)。我知道我会收到问题,为什么不是模块,但无论如何它都有自己的故事。

myproj-common (JAR)、myproj-core (JAR)、myproj-product1-batch (EAR)、myproj-product2-batch (EAR)

myproj-core 依赖于 myproj-common,而 myproj-product1-batch 依赖于 myproj-core。如果是模块,我可以简单地创建依赖项。如果是标准存档,我还可以创建依赖项并在存储库中提供 JAR,如果它是库 JAR,我可以...bla bla bla ...我可以修复所有标准依赖项,我不知道如何制作一个位于磁盘某处的 jar,一个依赖项。

我无法将
C:\Documents and Settings\users\myproj-common\target\myproj-common-0.0.1-SNAPSHOT.jar
作为依赖项
C:\Documents and Settings\users\myproj-放入以下 ​​jar 中核心\目标\myproj-core-0.0.1-SNAPSHOT.jar

将 JAR 放入 EAR 中也存在同样的问题。

任何想法 ?多么...希望有一个小的、快速和令人惊讶的修复,只是我看不到。

4

1 回答 1

0

我看不出有什么理由不能mvn install用来将这些 jars 和 ear 安装到本地存储库中。然后,您可以将它们作为依赖项包含在您喜欢的任何地方。

我怀疑您是否能够干净地让 maven 将 jar 拉入文件系统上除本地存储库之外的任何位置。

澄清一下,当你这样做时,mvn install它会将你的 JAR 放在目标文件夹中,但它也会将它放在你的本地存储库中(在 Windows 中默认为 C:\Documents And Settings\.m2)。在那里安装该 JAR 之后,您可以使用 pom 中的“依赖项”块将该 JAR 作为 maven 依赖项包含在其他项目中,如下所示:

<dependencies>
    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-a</artifactId>
      <version>1.0</version>
    </dependency>
</dependencies>

Maven Docs中解释了依赖机制。

此外,您需要告诉 maven 将所有依赖项实际打包到 JAR 中。您可以通过将其添加到您的 POM 中来做到这一点。(同时检查这个问题How can I create an executable JAR with dependencies using Maven? for the source of this code block)。

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
     <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- bind to the packaging phase -->
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>
于 2013-04-08T18:01:06.497 回答