我已经用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导入的库中,我看到我的库中有一个文件夹图标,而不是另一个。
如何解决?
答案 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文件将在另一个项目中使用。如果我的理解是正确的。您必须执行以下操作。
mvn clean install
或mvn clean package
之类的命令运行pom.xml。如果您没有联系或人工制品,则可以在另一个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>
希望它能回答您的问题。