为了账号安全,请及时绑定邮箱和手机立即绑定

在另一个maven项目中用maven实现项目

在另一个maven项目中用maven实现项目

阿波罗的战车 2023-01-05 17:06:33
我用 maven 创建了一个 Java 项目,我想在其他 maven 项目中实现它。子项目不是spring项目,是从头创建的Java项目迁移到maven管理依赖。我可以用 生成 jar mvn install。到目前为止,一切都很好。然后我尝试将这个 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为子项目中的类获取。在父项目中,在 Maven 导入的库中,我看到我的库有一个文件夹图标,而不是另一个库的图标。
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

最后,图书馆就像是……“损坏”……或类似的东西……这是一个 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>


查看完整回答
反对 回复 2023-01-05
?
www说

TA贡献1775条经验 获得超8个赞

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

你应该使用 SpringBoot

  • mvn bootRun在本地运行您的项目

  • mvn bootJar构建包含所有必需依赖项的 fat jar。

    运行这个 fat jar 调用java -jar parent.jar


查看完整回答
反对 回复 2023-01-05
?
杨魅力

TA贡献1811条经验 获得超5个赞

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

  1. 使用简单类型原型创建一个简单的 Maven 项目。

  2. mvn clean install使用或之类的命令运行 pom.xml mvn clean package

  3. 使用简单项目中的 jar 文件上传到您的 nexus/artifactory 存储库,并在另一个 maven 项目中使用 maven 定义。

如果你没有nexus或artifactory,你可以在另一个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>

希望它能回答你的问题。


查看完整回答
反对 回复 2023-01-05
  • 3 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信