在另一个Maven项目中使用Maven实施项目

时间:2019-06-06 18:31:05

标签: java maven spring-boot

我已经用maven创建了一个Java项目,该项目要在其他maven项目中实现。

子项目不是Spring项目,而是从头创建的Java项目,该项目已迁移到Maven以管理依赖项。

我可以用mvn install生成jar。到目前为止一切顺利。

然后,我尝试将此jar实施到其他使用maven和spring构建的项目中。

为此,我使用以下命令将该jar添加到了本地Maven存储库中:

mvn install:install-file -Dfile=/Users/.../target/app-0.0.1-SNAPSHOT.jar -DgroupId=com.mycompany.childapp -DartifactId=childapp -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar

然后我可以看到在.m2中的repo文件夹中,jar文件是正确的。

这在父项目pom.xml中:

<dependency>
      <groupId>com.mycompany.childapp</groupId>
      <artifactId>childapp</artifactId>
      <version>0.0.1-SNAPSHOT</version>
 </dependency>

此外,在插件部分:

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

至少对于eclipse来说,一切都很好,因为我可以毫无问题地开发和实现库中的类。我可以使用mvn clean package构建父应用程序,但是当我运行该应用程序并尝试执行使用子库的代码部分时,对于子项目中的类,我得到了ClassNotFoundException。 / p>

在父项目中,在由maven导入的库中,我看到我的库中有一个文件夹图标,而不是另一个。

enter image description here

如何解决?

3 个答案:

答案 0 :(得分:0)

mvn clean package为父项目创建jar,但不包括子jar。

您应该使用SpringBoot

  • mvn bootRun以在本地运行项目
  • mvn bootJar构建胖罐,其中将包含所有必需的依赖项。

    要运行此胖罐调用java -jar parent.jar

答案 1 :(得分:0)

最后是库就像...“损坏” ..或类似的东西。这是一个Java项目(使用eclipse向导创建),然后我转换为maven(使用eclipse向导)。

我从一开始就启动了一个新的项目作为maven项目,一切都在第一次尝试中就可以正常工作了。...

所以我只需要运行mvn clean install来生成jar并将其安装在.m2存储库中

然后在主应用程序pom.xml中,我必须声明为任何其他依赖项:

<dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>mylibrary</artifactId>
        <version>0.0.1</version>
    </dependency>

答案 2 :(得分:-1)

根据注释,您要使用maven创建一个项目,该项目将创建一个jar文件。该jar文件将在另一个项目中使用。如果我的理解是正确的。您必须执行以下操作。

  1. 创建具有简单类型原型的简单maven项目。
  2. 使用mvn clean installmvn clean package之类的命令运行pom.xml。
  3. 使用简单项目中的jar文件上传到您的nexus / artifactory存储库中,并在另一个maven项目中使用maven定义。

如果您没有联系或人工制品,则可以在另一个maven项目中本地使用jar文件。

要在另一个项目中本地添加jar文件,必须在pom.xml中添加以下依赖项结构。

<dependency>
    <groupId>your group id</groupId>
    <artifactId>name of the application</artifactId>
    <version>some version</version>
    <scope>system</scope>
    <systemPath>your location/jar-file-name.jar</systemPath>
</dependency>

希望它能回答您的问题。