Maven クライアントは、通常の HTTP "POST" 操作を使用してコンテンツを Nexus にプッシュします。コンテンツを公開するだけであれば、依存関係をダウンロードして解決するためのすべてのロジックは必要ありません....
本格的な Maven リポジトリの相互運用性が必要だと判断した場合は、Groovy、Gradle、Scala などの他のプロジェクトが行ったこと、つまりApache Ivyを埋め込むことをエミュレートすることをお勧めします。
ivy を Java プロジェクトに追加する方法を説明している次の記事を見つけました (Single jar 依存関係):
http://developers-blog.org/blog/default/2010/11/08/Embed-Ivy-How-to-use-Ivy-with-Java
Groovy の例
あなたの質問は、コンテンツの公開のサポートを追加する方法です。
次のコードは、ivy を使用して Nexus リポジトリに公開します。Groovy を使用すると、Ivy の文書化された ANT タスクを使用できます。
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]")
}