gpt4 book ai didi

java - Maven 将多个 jar 导入一个依赖项

转载 作者:行者123 更新时间:2023-12-01 09:08:44 24 4
gpt4 key购买 nike

我有以下问题。假设我有一个目录,其中包含一堆不受我监督的外部 jar。这些 jar 存储在 lib 目录中

lib
|_folder1
| |_jar1.jar
| |_jar2.jar
|_folder2
| |_jar3.jar
|_jar4.jar

现在,每次发布新版本的库时,我都会获得需要集成到应用程序中的 lib 文件夹的副本。

由于其中有很多 jars,并且我不想每次启动一个新项目或库版本发生变化时都集成无数的 jars,所以我想也许我可以将所有这些 jars 集成到由我的本地 Maven 存储库。

因此,我们的想法是让一个脚本爬行到整个目录,搜索所有 jar 文件并将它们安装在我的本地存储库中。

以下是脚本的第一个版本:

SET @libPath="C:\path\to\lib"
SET @groupId="group.id.custom.lib"
SET @artifactId="custom-lib"
SET @version="1.0"
SET @packaging="jar"
for /r %@libPath% %%i in (*.jar) do mvn install:install-file ^
-Dfile="%%i" ^
-DgroupId=%@groupId% ^
-DartifactId=%@artifactId% ^
-Dversion=%@version% ^
-Dpackaging=%@packaging%

我们的想法是只需将依赖项添加到我的 pom.xml 文件中即可完成:

<dependency>        
<groupId>group.id.custom.lib</groupId>
<artifactId>custom-lib</artifactId>
<version>[1.0,)</version>
</dependency>

该脚本会爬取所有文件,但仅将其找到的 jar 放入我的本地存储库中,并覆盖之前安装的 jar。

问题是是否有办法通过脚本的帮助来实现这一目标。

问候

[编辑:]在埃塞克斯男孩发表评论后,我已将我的脚本调整为:

SET @libPath="C:\path\to\lib"
SET @groupId="group.id.custom.lib"
SET @artifactId="custom-lib"
SET @version="1.0"
SET @packaging="jar"
SET @tempDir="C:\Temp\temp-dir"
SET @tempJar="temp.jar"
if not exist %@tempDir% mkdir %@tempDir%
cd %@tempDir%
del *.* /f /q
for /r %@magicDrawLib% %%i in (*.jar) do copy %%i %@tempDir%
for /r %@tempDir% %%j in (*.jar) do jar -xvf %%j del %%j
jar -cvf %@tempJar% *
mvn install:install-file ^
-Dfile=%@tempJar% ^
-DgroupId=%@groupId% ^
-DartifactId=%@artifactId% ^
-Dversion=%@version% ^
-Dpackaging=%@packaging%

这似乎有效。我必须测试生成的 Maven 依赖项来验证它。

最佳答案

首先,用另一个 jar 覆盖现有的 jar 会破坏使用 maven 的目的。所有 Artifact 都应该是不可变的(永远不会改变)。如果您有一个新的 jar,它是一个新版本,应该添加到您的存储库中。

我认为这个脚本是个好主意。

如果不止一个人共享此存储库,那么我将创建您自己的共享存储库 https://www.jfrog.com/open-source/是一款优秀的免费软件。

关于java - Maven 将多个 jar 导入一个依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com