Клиенты Maven отправляют контент в Nexus с помощью обычной операции HTTP «POST». Если все, что вы хотите сделать, это опубликовать контент, то вам не нужна вся логика для загрузки и разрешения зависимостей ....
Если вы решите, что вам нужна полноценная совместимость с репозиторием Maven, я бы посоветовал имитировать то, что сделали другие проекты, такие как Groovy, Gradle и Scala, что должно включать Apache Ivy .
Я нашел следующую статью, описывающую, как добавить плющ в ваш проект Java (зависимость от одного jar):
http://developers -blog.org / блог / по умолчанию / 2010/11 / 08 / Вставить-Ivy-Как в использовании-Ivy-с 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]")
}