发布除了带有gradle的jar之外的东西到Nexus

时间:2016-12-27 12:01:13

标签: gradle ant nexus progress-4gl openedge

我正在尝试将Gradle与Ant结合使用来构建我们的OpenEdge项目。 OpenEdge是几个世纪以前的4GL语言。 ; - )

无论如何,我已经设法下载了一些jar依赖项,但现在我陷入了如何将一个PL文件(Progress Library)发布到Nexus存储库的问题。事情就像Maven一样,Gradle似乎也是为Java项目而制作的。

这是我的脚本(我还有一个带有rootProject.name ='stomp'的settings.gradle文件):

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:\工作区\ GIT-库\ OpenEdge \ stomp.git> gradle这个   -DDLC = C:\ OpenEdge \ 116 \ DLC发布:generatePomFileForMavenJavaPublication:compileJava UP-TO-DATE   :processResources UP-TO-DATE:类UP-TO-DATE:jar UP-TO-DATE   :publishMavenJavaPublicationToMavenRepository无法找到元数据   be.mips:stomp:远程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:stomp: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'   上传   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:stomp:pl: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 FAILED

     

失败:构建因异常而失败。

     
      
  • 出了什么问题:任务执行失败':publishMavenJavaPublicationToMavenRepository'。

         
        

    无法将发布'mavenJava'发布到存储库'maven'     无法部署工件:无法传输工件be.mips:stomp:pom:1.4.0-20161227.115652-1 from / to remote     (http://srv-ci-nexus:8082/nexus/repositories/snapshots):不能     写信给资源     '是/ MIPS /跺脚/ 1.4.0-SNAPSHOT /跺脚-1.4.0-20161227.115652-1.pom'

      
  •   
  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  •   
     

建立失败

     

总时间:1.089秒

我注意到的第一件事是拥有我不需要的这些java任务。 :compileJava,:processResource,:classes,:jar ...

基本上我有一个build.xml ant文件,可以完成我想要的任何事情。但是蚂蚁的依赖管理非常差。所以我决定将Gradle与Ant结合使用。我希望Gradle为我做依赖管理。到目前为止,下载依赖项似乎工作正常(将不得不尝试PL而不是jar)。但是发布除了罐子之外的其他东西,你是怎么做到的?

阅读了很多Gradle在线文档,但所有示例似乎都基于java。

1 个答案:

答案 0 :(得分: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