gpt4 book ai didi

java - 如何将 Maven 嵌入到我的应用程序中?

转载 作者:搜寻专家 更新时间:2023-11-01 01:56:18 24 4
gpt4 key购买 nike

我想将 Maven 或具有所有神奇功能的库嵌入到我的 Java 应用程序中。

关键点:

  • 这是我要执行的两项任务:

    1/在本地仓库中发布一个jar
    2/在私有(private)企业存储库 (Nexus) 中发布 jar

  • 所有必需的 jar 必须位于公共(public) Maven 存储库中

  • jar 应该与 Maven 版本无关(即不特定于 Maven 2 或 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

常规示例

您的问题具体是如何添加对发布内容的支持。

以下代码使用 ivy 发布到 Nexus 存储库。 Groovy 使您能够使用 Ivy's documented ANT tasks .

import groovy.xml.NamespaceBuilder
import groovy.xml.MarkupBuilder

// Methods
// =======
def generateIvyFile(String fileName) {
def file = new File(fileName)

file.withWriter { writer ->
xml = new MarkupBuilder(writer)

xml."ivy-module"(version:"2.0") {
info(organisation:"org.dummy", module:"dummy")
publications() {
artifact(name:"dummy", type:"pom")
artifact(name:"dummy", type:"jar")
}
}
}

return file
}

def generateSettingsFile(String fileName) {
def file = new File(fileName)

file.withWriter { writer ->
xml = new MarkupBuilder(writer)

xml.ivysettings() {
settings(defaultResolver:"central")
credentials(host:"myrepo.com" ,realm:"Sonatype Nexus Repository Manager", username:"deployment", passwd:"deployment123")
resolvers() {
ibiblio(name:"central", m2compatible:true)
ibiblio(name:"myrepo", root:"http://myrepo.com/nexus", m2compatible:true)
}
}
}

return file
}

// Main program
// ============
def ant = new AntBuilder()
def ivy = NamespaceBuilder.newInstance(ant, 'antlib:org.apache.ivy.ant')

generateSettingsFile("ivysettings.xml").deleteOnExit()
generateIvyFile("ivy.xml").deleteOnExit()

ivy.resolve()
ivy.publish(resolver:"myrepo", pubrevision:"1.0", publishivy:false) {
artifacts(pattern:"build/poms/[artifact].[ext]")
artifacts(pattern:"build/jars/[artifact].[ext]")
}

关于java - 如何将 Maven 嵌入到我的应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8243930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com