当前位置: 首页 > 知识库问答 >
问题:

将带有gradle的jar以外的内容发布到Nexus

尚俊楠
2023-03-14

我试图将Gradle与蚂蚁结合使用来构建我们的OpenEdge项目。OpenEdge是几个世纪前的4GL语言。;-)

无论如何,我已经设法下载了一些jar依赖项,但现在我陷入了如何将PL文件(进度库)发布到Nexus存储库的困境。问题是,与Maven一样,Gradle似乎也适合Java项目。

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

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。吉特

失败:生成失败,出现异常。

>

  • 错误:任务的执行失败:“PublishMavenJavaPublicationToAventRepository”。

    未能将发布'mavenJava'发布到存储库'maven'未能部署工件:无法将工件be.mips:Stamp: pom:1.4.0-20161227.115652-1从/到远程(超文本传输协议://srv-ci-nexus: 8082/nexus/repository/快照):无法写入资源'被/mips/践踏/1.4.0-快照/stomp-1.4.0-20161227.115652-1.pom'

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

    建筑失败

    总时间:1.089秒

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

    基本上我有个身材。xml ant文件做了我想要的一切。但是ant中的依赖关系管理非常差。所以我决定将Gradle与Ant结合使用。我想让Gradle帮我做依赖关系管理。到目前为止,下载依赖项似乎工作正常(必须尝试使用PL而不是jar)。但是发布一个罐子以外的东西,你是怎么做到的?

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

  • 共有1个答案

    施知
    2023-03-14

    如果不需要编译java代码,请使用base插件而不是java。您还应该从组件中删除。java

    apply plugin: 'base'
    apply plugin: 'maven-publish'
    
    publishing {
      publications {
        mavenJava(MavenPublication) {
          artifact stompProgressLibraryFile
        }
      }
    }
    

    您的下一个错误“无法写入资源”很可能不是gradle问题,请检查对存储库的写入访问。在发布到远程存储库之前,请尝试将其发布到本地存储库中:

    应用插件:

    apply plugin: "maven"
    

    执行任务安装

    $ ./gradlew install
    
     类似资料:
    • 我一直在尝试将jar转换为exe。该程序(jar)使用蓝牙库“Bluecove”,这是某个目录中的另一个jar。该程序还使用Java Swing,通常是JFrame等。当从Netbeans或Eclipse中运行时,该程序运行良好。现在是我部署它的时候了,因此我需要将其转换为exe。但我一直无法让最终的可执行文件与“Bluecove”链接。我尝试了JSmooth和Launch4j,但是使用这两个工具

    • 我想从jar复制一个文件。我要复制的文件将被复制到工作目录之外。我做了一些测试,我尝试的所有方法最终都是0字节的文件。 编辑:我希望通过程序复制文件,而不是手动复制。

    • 我试图使用Gradle将Jar文件发布到Azure DevOps工件中,但我得到了以下错误信息: 失败:生成失败,出现异常。 > 问题:在根项目“Project1”中找不到任务“publish”。 尝试:运行gradle tasks以获取可用任务的列表。使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--扫描以获得完整的洞察力。

    • 我们正在用Adopt JDK11和IntelliJ使用Gradle开发一个JavaFX11应用程序。最后,我们需要一个用于windows的EXE文件(该应用程序仅为windows设计)。在第一次尝试中,我们也使用了gradle中的launch4J,由于以下问题,我们也可以使用BAT文件,我们可以迁移到exe文件。 所以我们的主要目标和问题是,如何才能创建一个可执行的jar文件。 我们进行了几次尝试

    • 是否可以仅使用Gradle将文件上传到artiFactory存储库而不使用maven-发布插件? 我只想将任何文件上载到特定的存储库位置。以下是发布片段: 我想要的只是条目将上传到相对存储库路径。 但是自述。txt上传为pluginDescriptor/nip/nip-。txt,其中nip是项目名称。 如果没有组、artifactID和版本,我如何给出一个专用名称? 我可以找到的所有示例都使用ma

    • 我们曾经在项目中使用 上的包作为依赖,不过你也可以通过发布自己的包来向它人分享代码。crates.io 用来分发包的源代码,所以它主要托管开源代码。 Rust 和 Cargo 有一些帮助它人更方便找到和使用你发布的包的功能。我们将介绍一些这样的功能,接着讲到如何发布一个包。 准确的包文档有助于其他用户理解如何以及何时使用他们,所以花一些时间编写文档是值得的。第三章中我们讨论了如何使用 // 注释