Maven 2 我想部署一个jar,它';s对远程存储库的依赖关系

Maven 2 我想部署一个jar,它';s对远程存储库的依赖关系,maven-2,repository,dependencies,Maven 2,Repository,Dependencies,基本上,我有一个项目和一个持续集成解决方案,我没有管理员权限,无法从我们的网络中访问。因此,我希望将项目的所有JAR部署到CI解决方案可以访问的中央maven存储库中。它们在我当地的回购协议中,但这是一个相当复杂的项目。我不能只设置一个标志或什么,然后部署一个jar和jar所依赖的本地repo中的其他东西吗 好吧,自从我第一次写这篇文章以来,我就有了自己的想法。那么这个呢: 将我的本地maven repo换成一个新名称 执行带-U标志的构建,这样就可以创建一个新的repo,其中只包含我在这个项目

基本上,我有一个项目和一个持续集成解决方案,我没有管理员权限,无法从我们的网络中访问。因此,我希望将项目的所有JAR部署到CI解决方案可以访问的中央maven存储库中。它们在我当地的回购协议中,但这是一个相当复杂的项目。我不能只设置一个标志或什么,然后部署一个jar和jar所依赖的本地repo中的其他东西吗

好吧,自从我第一次写这篇文章以来,我就有了自己的想法。那么这个呢:

  • 将我的本地maven repo换成一个新名称
  • 执行带-U标志的构建,这样就可以创建一个新的repo,其中只包含我在这个项目中需要的东西
  • 执行从新创建的本地回购到远程回购的合并
    查看说明和用法。我认为部署文件mojo虽然旨在部署不是由maven构建的工件,但它可能会帮助您做您想做的事情。

    dborba所说的。我将编写一个(bash/ruby)脚本来运行Maven依赖插件,然后使用依赖插件报告的GAE属性运行deploy文件。假设我有多个依赖项。一些存储库经理(如Nexus)擅长计算GAE信息。

    在我的一篇博文中,我描述了一个类似的场景:。它使用(嵌入maven中的Groovy)。如果您从该示例中获取代码,请跳过目录遍历,而是遍历项目依赖项,您应该几乎就在那里了。

    以下是我如何处理此问题的:

    首先,我把我当地的maven回购协议复制成一个新名字。然后我运行了“mvn-U clean install”,确保生成的本地maven repo只包含此特定构建所需的JAR。接下来,我创建了这个脚本(为Windows用户详细解释):

    对于不阅读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
    

    这似乎可以将本地repo中的库转换为共享repo。

    使用maven assembly插件构建一个具有依赖项的jar,它将构建一个没有外部依赖项的可执行jar。见例

    我喜欢您的方法(+1),但我会使用Groovy/GMaven,因为这样您就可以在pom中实现:
    mvn deploy:deploy-file -DpomFile=[pom file name here] -Dfile=[jar file name here] -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep