Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven构建Jar_Java_Maven_Build_Dependencies_Repository - Fatal编程技术网

Java Maven构建Jar

Java Maven构建Jar,java,maven,build,dependencies,repository,Java,Maven,Build,Dependencies,Repository,我正在从事Maven项目,我有一个jar app-client.jar,它依赖于app-core.jar。所以我有一个pom.xml用于app-client.jar,pom.xml具有app-core的依赖性,所以我们在这个pom.xml中添加了app-core的依赖性。 现在我想在我的主项目中使用app-client.jar。因为这个jar是本地构建的,在远程存储库中不可用。因此,我添加了应用程序客户端,并指定了它将位于的位置存储库。 如下 回购 真的 忽视 假的 文件://${projec

我正在从事Maven项目,我有一个jar app-client.jar,它依赖于app-core.jar。所以我有一个pom.xml用于app-client.jar,pom.xml具有app-core的依赖性,所以我们在这个pom.xml中添加了app-core的依赖性。 现在我想在我的主项目中使用app-client.jar。因为这个jar是本地构建的,在远程存储库中不可用。因此,我添加了应用程序客户端,并指定了它将位于的位置存储库。 如下


回购
真的
忽视
假的
文件://${project.basedir}/./lib
com.sample
应用程序客户端
1
我把我的罐子放在下面 [我的模块]/[com]/[sample]/[app-client]/[1.0]/app-client-1.0.jar

当我运行mvn clean install时,我得到一个错误,应用程序客户端的pom.xml找不到。而构建失败。通常,当我使用单个jar时,它工作正常,但如果我使用与其他jar有依赖关系的jar,它就会失败


因此,我如何构建我的应用程序客户端jar及其pom,使其行为正常,并同时部署app-core.jar。

首先,在构建app-client.jar时,构建一个包含app-core.jar依赖项的胖jar


接下来,将app-client-1.0.jar复制到本地repo的指定位置不起作用,要将此jar添加到本地repo,请使用以下命令
mvn install:install file-Dfile=-DgroupId=-DartifactId=-Dversion=-dpacking=

如果您使用
mvn clean install
构建
app client.jar
,那么它将被安装到您的Maven本地存储库(
...m2/repository
)。然后,同一台计算机上的任何其他项目都可以在其pom中引用它,而无需进一步的信息。因此无需输入

如果您想在同一个项目上与多个人一起工作,请使用Nexus/Artifactory服务器来共享JAR


使用lib文件夹和系统路径的解决方案已被弃用,并会造成麻烦。

这里回答了相同的问题:在我的项目中,我有很多依赖项,因此我不想在给定的命令中添加列表。第二,如果我在项目的pom中添加app-core.jar依赖项,那么它也可以正常工作。但是它应该为app-client.jar自动部署。要使用app-client部署app-core,请构建一个胖jar。应该避免使用胖jar作为依赖项。Fat JAR纯粹用于创建独立的应用程序。您好,很抱歉回复太晚,谢谢您的更新。在我的例子中,app-client.jar和app-core.jar是由其他人提供的,我不是在我的机器上构建它。那样的话,我该怎么办?通过在.m2文件夹中添加jar将解决我的问题?您可以使用
mvn install:install file
在Maven本地存储库中本地安装jar。最好是自己检查项目并构建它们。更好的方法是使用Nexus/Artifactory这样的存储库管理器(如果其他工件来自开发团队中的其他人)。
<repositories>
   <repository>
       <id>repo</id>
       <releases>
           <enabled>true</enabled>
           <checksumPolicy>ignore</checksumPolicy>
       </releases>
       <snapshots>
           <enabled>false</enabled>
       </snapshots>
       <url>file://${project.basedir}/../lib</url>
   </repository>
<repositories>
<dependencies>
   <dependency>
       <groupId>com.sample</groupId>
       <artifactId>app-client</artifactId>
       <version>1.0</version>
   </dependency>
</dependencies>