基本上,我有一个项目和持续集成解决方案,我没有管理员访问权限,无法访问我们的网络。因此,我想将项目的所有jar部署到CI解决方案可以到达的中央maven存储库。他们在我当地的回购中,但这是一个非常复杂的项目。我不能只设置一个标志或者什么东西,并且在罐子所依赖的本地仓库中部署一个罐子以及我拥有的其他东西吗?
好吧,自从我第一次写这篇文章以来,我已经了解了自己的想法。那怎么样:答案 0 :(得分:1)
dborba说什么。我编写了一个(bash / ruby)脚本来运行Maven Dependency Plugin,然后使用Dependency Plugin报告的GAE属性运行deploy-file。假设我有多个依赖项。一些存储库管理员(例如Nexus)擅长编制GAE信息。
答案 1 :(得分:1)
以下是我处理此问题的方法:
首先,我将当地的maven repo复制到一个新名称。然后我运行“mvn -U clean install”,确保生成的本地maven repo仅包含此特定构建所需的jar。接下来我创建了这个脚本(详细解释了Windows用户):
#!/bin/bash
for I in `find ~/.m2 -name "*.jar"`
do
J=`echo $I | sed 's/jar$/pom/'`
mvn deploy:deploy-file -DpomFile=$J -Dfile=$I -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep
done
对于那些不读BASH的人,它会抓取用户主目录的.m2子目录中所有jar文件的完整路径和文件名。这通常是用户的本地仓库所在的位置。然后它复制它并将文件扩展名从“jar”更改为副本上的“pom”。然后我们执行下面的maven命令:
mvn deploy:deploy-file -DpomFile=[pom file name here] -Dfile=[jar file name here] -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep
这似乎可以将我的本地仓库中的库用于共享仓库。
答案 2 :(得分:0)
查看Maven Deploy Plugin说明和用法。我认为deploy-file mojo虽然用于部署非maven构建的工件,但可能会帮助你做你想做的事。
答案 3 :(得分:0)
在博文中,我描述了一个类似的场景:Deploying a folder hierarchy to a Maven Repository。它使用GMaven(嵌入在maven中的Groovy)。如果您从该示例中获取代码,请跳过目录walk并改为遍历项目依赖项,您应该几乎就在那里。
答案 4 :(得分:0)
使用maven-assembly-plugin构建一个jar-with-dependencies,它将构建一个没有外部依赖关系的可执行jar。参见例如
How can I create an executable JAR with dependencies using Maven?