据我所知,使用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>
Run Code Online (Sandbox Code Playgroud)
假设我的存储库可以使用scp访问,例如在上面的命令中
-Durl=scpexe://example.org//users/mvnrepo/maven
Run Code Online (Sandbox Code Playgroud)
使用maven 3,此部署命令失败并显示错误消息.
我使用的解决方法是复制两个罐子:wagon-ssh-common-2.2.jar并复制 wagon-ssh-external1.0.jar到我的$M2_HOME/lib目录.
因此我的问题是:为什么Maven不能自己找回合适的货车?
(如果有可能的话,怎么做呢?)
货车是Maven扩展.您可以按如下方式添加它们:
<project>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看Maven Wagon页面.
作为一个简单而简短的答案:添加第三方要求您具有:
进一步的考虑
我假设您想使用第三方库,而不仅仅是发布您自己的库。
如果您想使用第三方库,您确实应该寻找托管它的现有存储库。我很确定您已经搜索过,但这是更好的方法。如果找到,只需将其添加到您的 Maven 存储库缓存中即可。
接下来,如果您找不到,则可以将其添加到您自己的存储库中(假设您已安装)。我真的不知道你是否熟悉这一点,这听起来可能是显而易见的,所以请原谅我。但存储库不仅仅是文件服务器。Carlspring kinldy 谈到 Nexus 时举了一个例子。还有 Artifactory 等等。它们是真正的应用程序服务器。所以,你必须有一个属于你自己的。它们具有允许您添加工件的接口,并提供一些有关它的信息(至少是组、ID、版本)。
最后,Maven 处理依赖范例。这不是正式的,只是一些考虑因素:
所有这些信息都应该放在 pom.xml 中,并且它们实际上是由作者放置的(参见 1),或者至少在您在 Maven 中使用它时提供(参见 2)。在所有情况下,它们都来自 pom.xml ...自动生成与否...所以您需要一个 pom.xml :)。
事实上,发布或使用库会导致同样的问题:您必须提供有关您开发的内容的信息,以便以更自动化和更可靠的方式使用。有时这很丑陋,但这是更好的方法。
再次,如果这听起来很明显,请原谅我。但根据经验,当你无法使用 Maven 做某事时,通常是因为这不是做这件事的好方法,即使你的流程比“最伟大的开发流程”小得多,而“最伟大的开发流程”应该驱动每个人:)
| 归档时间: |
|
| 查看次数: |
5505 次 |
| 最近记录: |