2016-12-27 16 views
1

Я пытаюсь использовать 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.

ответ

1

Если вам не нужно скомпилировать Java-код, используйте base плагин вместо java. Кроме того, вы должны удалить from components.java:

apply plugin: 'base' 
apply plugin: 'maven-publish' 

publishing { 
    publications { 
    mavenJava(MavenPublication) { 
     artifact stompProgressLibraryFile 
    } 
    } 
} 

Ваша следующая ошибка «Не удалось записать в ресурс», скорее всего, не Gradle проблема, проверьте доступ на запись в репозиторий. Перед публикацией в удаленном хранилище, попробуйте опубликовать его в локальном хранилище:

Применить плагин:

apply plugin: "maven" 

Выполнение задачи install:

$ ./gradlew install 
+0

Thx! Уже удален из компонентов.java. Затем я попробую базовый плагин. Странно, что такие вещи не все, что хорошо описано в онлайн-руководстве Gradle User Guide ... –