如何将 Maven 嵌入到我的应用程序中?
我想将 Maven 或能够发挥所有作用的库嵌入到我的 Java 应用程序中。
要点:
-
这是我想要执行的两项任务:
1/ 在本地存储库中发布 jar
2/ 在私有企业存储库(Nexus)中发布 jar -
所有必需的 jar 必须位于公共 Maven 存储库中
jar 应该是 Maven版本无关(即不特定于 Maven 2 或 3)
如果可以的话,请提供您的回复的片段。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Maven 客户端使用正常的 HTTP“POST”操作将内容推送到 Nexus。如果您只想发布内容,那么您不需要下载和解决依赖关系的所有逻辑...
如果您决定需要成熟的 Maven 存储库互操作性,那么我建议模仿其他项目,例如 Groovy ,Gradle和Scala都做了,就是嵌入Apache Ivy。
我发现以下文章描述了如何将ivy添加到您的java项目中(单jar依赖项):
http://developers-blog.org/blog/default/2010/11/08/Embed-Ivy-How-to-use-Ivy-with-Java
Groovy 示例
您的问题是具体来说如何添加对发布内容的支持。
以下代码使用 ivy 发布到 Nexus 存储库。 Groovy 使您能够使用Ivy 记录的 ANT 任务。
Maven clients push content to Nexus using a normal HTTP "POST" operation. If all you want to do is publish content, then you don't need all the logic for downloading and resolving dependencies....
If you decide you need full-blown Maven repository interoperability then I'd suggest emulating what other projects like Groovy, Gradle and Scala have done, which is to embed Apache Ivy.
I found the following article describing how to add ivy into your java project (Single jar dependency):
http://developers-blog.org/blog/default/2010/11/08/Embed-Ivy-How-to-use-Ivy-with-Java
Groovy Example
Your question is specifically how to add support for publishing content.
The following code uses ivy to publish to a Nexus repo. Groovy enables you to use Ivy's documented ANT tasks.
以下是嵌入 Maven 2 库的示例:
而不是查找项目构建器,您可以查找
ArtifactInstaller
和ArtifactDeployer
- 您将在maven-install-plugin
和maven-deploy-plugin
。本示例中 POST 的区别在于它将生成适当的元数据、校验和和快照转换。
Maven 3 库可能更容易嵌入并与 Maven 2 保持兼容,但是我没有任何可用的示例。
Here is an example embedding Maven 2 libraries:
Instead of looking up the project builder, you can look up the
ArtifactInstaller
andArtifactDeployer
- you'll find the code you want in themaven-install-plugin
and themaven-deploy-plugin
.The difference just POSTing in this example is that it will generate the appropriate metadata, checksums and snapshot transformations.
The Maven 3 libraries may be easier to embed and remain compatible with Maven 2, however I don't have any examples readily available.
我还没有尝试过你想要的,但我会首先研究 Maven Embedder 项目。甚至可能是 m2e 项目,它也附带了 Maven 的嵌入式版本(并且也能够使用外部安装)。
本地发布可能涉及调用 maven-install-plugin,远程发布可能涉及使用 maven-deploy-plugin。
希望这能为您指明正确的方向。
I have not tried what you want, but I would start by looking into the Maven Embedder project. Possibly even the m2e project which also comes with an embedded version of Maven (and the ability to use external installations too).
Publishing locally will likely involve invoking the maven-install-plugin, and publishing remotely will likely involve using the maven-deploy-plugin.
Hope this points you in the right direction.