我有以下问题。假设我有一个不受我监督的外部罐子的目录。这些jar存储在lib目录
中lib
|_folder1
| |_jar1.jar
| |_jar2.jar
|_folder2
| |_jar3.jar
|_jar4.jar
现在,每次发布新版本的库时,我都会获得需要集成到应用程序中的lib文件夹的副本。
由于其中有很多罐子,我不想在每次开始新项目或库变更版本时集成无数罐子,我想也许我可以将所有这些罐子集成到一个库中由我当地的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依赖项来验证它。
答案 0 :(得分:1)
首先用另一个覆盖现有的jar会破坏使用maven的对象。所有工件都应该是可变的(永不改变)。如果您有一个新的jar,它是一个新版本,应该这样添加到您的存储库中。
我认为这个剧本是个好主意。
如果有多个人共享此存储库,那么我将创建您自己的共享存储库https://www.jfrog.com/open-source/是一个非常好的免费存储库。