Maven 3:使用SCP部署工件

Maven 3:使用SCP部署工件,maven,scp,Maven,Scp,据我所知,使用maven部署第三方二进制工件是这样做的: mvn deploy:deploy-file -DgroupId=<group-id> \ -DartifactId=<artifact-id> \ -Dversion=<version> \ -Dpackaging=<type-of-packaging> \ -Dfile=<path-to-file> \ -DrepositoryId=<id-to-m

据我所知,使用maven部署第三方二进制工件是这样做的:

mvn deploy:deploy-file -DgroupId=<group-id> \
  -DartifactId=<artifact-id> \
  -Dversion=<version> \
  -Dpackaging=<type-of-packaging> \
  -Dfile=<path-to-file> \
  -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
  -Durl=<url-of-the-repository-to-deploy>
使用maven 3,此部署命令失败并显示错误消息

我使用的解决方法是将两个jar复制到我的
$M2\u HOME/lib
目录中:
wag-ssh-common-2.2.jar
wag-ssh-external1.0.jar

因此我的问题是:为什么Maven不能自己找回合适的货车


(如果可能的话,如何让它做到这一点呢?

货车是Maven的延伸。您可以按如下方式添加它们:

<project>
    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
    </build>
</project>

org.apache.maven.wagen
第页。

作为一个简单明了的回答:添加第三方要求您具备:

  • Maven存储库(像Nexus或带有GUI的Artifactory这样的应用程序)
  • 或pom.xml(在命令行中)
进一步考虑事项

我假设您想要使用第三方库,而不仅仅是发布您自己的库

  • 如果您想使用第三方库,您真的应该寻找托管它的现有存储库。我敢肯定你已经搜索过了,但这是更好的方法。如果找到一个,只需将其添加到maven repo缓存中即可

  • 下一步,如果你找不到,你可以把它添加到你自己的回购协议中,假设你有。我真的不知道你是否熟悉这一点,这可能听起来很明显,所以请原谅我。但是存储库不仅仅是一个文件服务器。Carlspring kinldy谈到Nexus是为了举个例子。还有人工制品,还有许多其他的。它们是真正的应用服务器。所以,你必须有你自己的。 它们具有允许您添加工件的接口,提供有关工件的一些信息(至少是组、id、版本)

  • 最后,Maven处理依赖范式。这不是一个正式的问题,只是一个考虑因素:

    • 谁开发的
    • 它取决于什么(其他LIB)
    • 是谁提供的
    • 它可信吗
  • 所有这些信息都应该放在pom.xml中,它们实际上应该由作者放置(见1),或者至少在Maven中使用时提供(见2)。在所有情况下,它们都来自pom.xml。。。是否自动生成。。。因此需要一个pom.xml:)


    事实上,发布或使用库会导致同样的问题:您必须提供有关您开发的内容的信息,以便以更自动化和更可靠的方式使用。 有时候很难看,但这是更好的方法


    再一次,如果这听起来很明显,请原谅我。但是根据经验,当你不能用Maven做一些事情时,通常是因为这不是一个好的方法,甚至你的过程比驱动每个人的“最伟大的开发过程”都要小:)

    好的,但是对于快速的第三方二进制部署,我希望我不需要创建POM文件。可以将其添加到全局设置文件或类似文件中吗?如果您使用Nexus,可以通过web应用程序上载文件。我同意Jean-Rémy的观点,还有其他Maven存储库,如Archiva和Artifactory。我只是举了一个这样一种关系的例子,我改写了我写的内容。我的本意不是减少你说的话我明白你的意思:)
    <project>
        <build>
            <extensions>
                <extension>
                    <groupId>org.apache.maven.wagon</groupId>
                    <artifactId>wagon-ssh</artifactId>
                    <version>1.0</version>
                </extension>
            </extensions>
        </build>
    </project>