Я пытаюсь использовать Gradle в сочетании с Ant для создания наших проектов OpenEdge. OpenEdge - это язык 4GL от нескольких столетий назад. ;-)Публикуйте что-то еще, чем банку с градиентом Nexus
В любом случае, мне удалось загрузить некоторые зависимости jar, но теперь я застрял в том, как публиковать файл PL (Progress Library) в репозитории Nexus. Дело в том, что, как и Maven, Gradle также создается для проектов Java.
Это мой сценарий (У меня также есть settings.gradle файл с 'топать' rootProject.name =):
apply plugin:'java'
apply plugin: 'maven-publish'
group 'be.mips'
version = '1.4.0-SNAPSHOT'
repositories {
/*
Gradle uses the same logic as Maven to identify the location of your local
Maven cache. If a local repository location is defined in a settings.xml,
this location will be used. The settings.xml in USER_HOME/.m2 takes precedence
over the settings.xml in M2_HOME/conf. If no settings.xml is available, Gradle
uses the default location USER_HOME/.m2/repository.
*/
mavenLocal()
maven {
credentials {
username '****'
password '****'
}
url "http://srv-ci-nexus:8082/nexus/content/repositories/MadeApplReleases/"
url "http://srv-ci-nexus:8082/nexus/content/repositories/MadeApplSnapshots/"
}
mavenCentral()
}
def stompProgressLibraryFile = file('dist/lib/STOMP.PL')
artifacts {
archives stompProgressLibraryFile
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact stompProgressLibraryFile
}
}
repositories {
maven {
// default credentials for a nexus repository manager
credentials {
username '****'
password '****'
}
// url to the releases maven repository
url "http://srv-ci-nexus:8082/nexus/repositories/snapshots"
}
}
}
configurations {
antconf
}
dependencies {
antconf 'be.mips:mips-progress-ant-tasks:1.5.8-SNAPSHOT',
'be.mips:mips-pct:1.0-SNAPSHOT',
'ant-contrib:ant-contrib:1.0b3'
}
/* Loads the jars */
ClassLoader antClassLoader = org.apache.tools.ant.Project.class.classLoader
configurations.antconf.each {
File f -> antClassLoader.addURL(f.toURI().toURL())
}
/* Extend clean task */
clean.doFirst {
delete '_ant_rcode', 'src', 'dist'
println 'deleted directories'
}
/* Create dist/lib directory as prolib does not create directory automatically */
task init(dependsOn: clean) {
doLast{
project.file('dist/lib').mkdirs()
println 'created dist/lib'
}
}
ant.importBuild 'build.xml'
Запуск Gradle публиковать дает мне следующий вывод:
C: \ Workspace \ git-repositories \ OpenEdge \ stomp.git> gradle -DDLC = C: \ OpenEdge \ 116 \ DLC publish: generatePomFileForMavenJavaPublication: compileJava UP-TO-DATE : processResources UP-TO-DATE: классы UP-TO- DATE: jar UP-TO-DATE : publishMavenJavaPublicationToMavenRep ository Не удалось найти метаданные be.mips: топать: 1.4.0-SNAPSHOT/Maven-metadata.xml в удаленном (http://srv-ci-nexus:8082/nexus/repositories/snapshots) Загрузить http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pom Не удалось передать артефакт be.mips: топает: ПОМ: 1.4.0-20161227.115652 -1 от/к удаленным (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Мог бы не записи в ресурс 'быть/MIPS/педали эффектов/1.4.0-SNAPSHOT/топать-1.4.0-20161227.115652-1.pom' Загрузить http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.jar Могли не передавать артефакт be.mips: stomp: jar: 1.4.0-20161227.115652-1 с/на удаленный (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Не удалось написать ресурс 'быть/MIPS/топать/1.4.0-SNAPSHOT/топать-1.4.0-20161227.115652-1.jar' Загрузить http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pl Не удалось передать артефакт be.mips: топать: пл: 1.4.0-20161227.115652-1 от/к удаленным (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Мог бы не записи в ресурс 'быть/MIPS/педали эффектов/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pl' : publishMavenJavaPublicationToMavenRepository НЕСОСТОЯВШЕМСЯ
FAILURE: Сбой сборки с исключением.
Что пошло не так: Выполнение не выполнено для задачи ': publishMavenJavaPublicationToMavenRepository'.
Не удалось опубликовать публикацию 'mavenJava' в хранилище 'Maven' Failed развернуть артефакты: Не удалось передать артефакт be.mips: педаль эффектов: POM: 1.4.0-20161227.115652-1 от/к удаленному (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Может не записи к ресурсу 'быть/MIPS/топать/1.4.0-SNAPSHOT/топать-1.4.0-20161227.115652-1.pom'
Try: Запуск с --stacktrace опции к получить трассировку стека. Запустите с опцией --info или --debug, чтобы получить больше выходных данных журнала.
BUILD FAILED
Общее время: 1.089 сек
Первое, что я замечаю это иметь эти Java задачи, которые мне не нужны. : compileJava,: processResource,: classes,: jar ...
В основном у меня был файл build.xml ant, делающий все, что я хотел. Но управление зависимостями у муравьев очень мало. Поэтому я решил использовать Gradle в сочетании с Ant. Я хочу, чтобы Gradle выполнял управление зависимостями для меня. До сих пор загрузка зависимостей, кажется, работает нормально (придется попробовать с PL вместо баночки). Но, публикуя что-то еще, чем банку, как вы это делаете?
Прочитайте много онлайн-документации Gradle, но все примеры, похоже, основаны на java.
Thx! Уже удален из компонентов.java. Затем я попробую базовый плагин. Странно, что такие вещи не все, что хорошо описано в онлайн-руководстве Gradle User Guide ... –