将 grails 插件部署到 Nexus 的问题

Issues deploying grails plugin to Nexus

我有一个 grails 项目,配置为插件,我想做的是将其推送到本地 Nexus 存储库。

我已经能够使用 grails 发布插件做到这一点,但是当我使用依赖项时,我的项目使用依赖项无法找到 类.

所以我查看 jar 看看为什么 Groovy 代码的 none 看起来已经编译,看起来所有 groovy 文件都刚刚打包一起而不是先编译代码。

知道我做错了什么吗?

关于我在做什么的信息:

Grails: 2.4.3

BuildConfig.groovy

grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"

grails.project.repos.nexus.url = "http://xxxxx:8081/repository/maven-snapshots/"
grails.project.repos.default = "nexus"
grails.project.repos.nexus.username = "xxxx"
grails.project.repos.nexus.password = "xxxxx"

grails.project.fork = [
    // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
    //  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],

    // configure settings for the test-app JVM, uses the daemon by default
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    // configure settings for the run-app JVM
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the run-war JVM
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the Console UI JVM
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]
grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies

    inherits("global") {
        // uncomment to disable ehcache
        // excludes 'ehcache'
    }
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    repositories {
        grailsCentral()
        mavenLocal()
        mavenCentral()
    }
    dependencies {
       compile 'com.xxx:lsi-client:1.0-SNAPSHOT'
    }

    plugins {
        build ':release:3.0.1', {
            export = false
        }
    }
}

要创建工件,我 运行 使用以下命令

grails maven-deploy

我也试过下面的命令

grails publish-plugin --repository=nexus

我有一个标准的 grails 项目目录结构。不确定要提供什么其他信息。在这一点上拔掉我的头发。

当我 运行 一个 grails-compile 按预期做正确的事情时 groovy 类 被编译到 target/classes 目录中。

对于那些对这里的答案感兴趣的人,我最终加入了 Grails Slack 社区,那里有人友好地回答了我的问题:

Grails 2 插件只是将源代码打包,无论是 zip 还是 jar,类 都不会被编译。它们由使用插件的应用程序编译

Grails 3+和我理解的不一样,插件都是jar,都是编译出来的

很高兴知道,但这只是从 Grails 2 升级的另一个原因...

编辑: 找到了其他有帮助的东西,如果你需要在你的 grails 2 插件中编译并打包为 jar 在你的 maven 本地仓库中的域 类 那么你可以使用以下命令实现此目的

grails maven-install --binary

还要确保 pom.xml 中的工件类型也设置为 jar(或者省略,因为我认为默认工件类型是 jar)

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company</groupId>
    <artifactId>ArtifactName</artifactId>
    <packaging>jar</packaging>
    <version>0.1</version>

希望这对其他人有所帮助。