【问题标题】:Gradle + Java, multiproject build.gradleGradle + Java,多项目 build.gradle
【发布时间】:2016-05-13 20:42:45
【问题描述】:

这是我的文件层次结构,“域模块”现在没有代码,基本上是 DBController 和域的包装器。

Domain Module
  .gradle
  .idea
  build
  DBController
      build
      src
          main
              java
                  interfaces
                      IDBController.java
                  DBController.java
          res
              some SQL files
          test
              java
                  some test files
      build.gradle

  Domain
      .gradle
      build
      gradle
      src
          main
              java
                  Server.java
      build.gradle
      gradlew
      gradlew.bat
      settings.gradle
  gradle
  build.gradle
  gradlew
  gradlew.bat
  settings.gradle

这是我在 Domain Module/build.gradle 中的 build.gradle

group 'Group'
version '1.0-SNAPSHOT' 

apply plugin: 'java'
targetCompatibility = 1.8
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':Domain')
    compile project(':DBController')
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

这是 DOmain Module/DBController/build.gradle 中的 build.gradle

group 'Group'
version '1.0-SNAPSHOT'

apply plugin: 'java'
  compileJava {
      sourceCompatibility = 1.8
      targetCompatibility = 1.8
  }

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'org.postgresql:postgresql:9.3-1103-jdbc3'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

dependencies {
    compile('com.googlecode.json-simple:json-simple:1.1.1')
    compile files('libs/json-simple-1.1.1.jar')
    compile('org.postgresql:postgresql:9.3-1103-jdbc3')
}

最后,Domain Module/Domain/build.gradle 中的 build.gradle

group 'Group'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
}

apply plugin: 'java'
apply plugin: 'idea'

repositories {
    mavenCentral()
    jcenter()
}

sourceCompatibility = 8
targetCompatibility = 8

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

dependencies {
    compile project(':DBController')
}

我的主要方法在 Server.java 中,它使用 DBController 的一个实例。如何在我的 java 清单中分配这个文件?我试过简单的

jar {
    manifest {
        attributes 'Main-Class': 'Domain.src.main.java.Server'

}

但是每当我尝试执行 java -jar -Domain Module/build/libs 中生成的 jar- 我收到一个错误,告诉我它找不到主文件,并且由于构建 gradles 现在它给了我一个错误,说根本没有对主类的引用。

我的项目的要点是 DBController 向 SQL 服务器发出查询,而 Server.java 将是一个 Spring 服务器。我决定使用 gradle 来做这件事,所以我会学习,虽然我对 gradle 了解了很多,但仍有很多不确定性。

【问题讨论】:

    标签: java spring gradle manifest


    【解决方案1】:

    我刚刚发现出了什么问题。

    jar {
      manifest {
        attributes 'Main-Class': '-insert main class here-'
      }
    }
    

    这个属性假设你从 src/main/java 目录开始,所以如果我的文件路径是

    src/main/java/robert/util/Class.java
    

    我只想说

    jar {
      manifest {
        attributes 'Main-Class': 'robert.util.Class'
      }
    }
    

    花了这么多时间解决这样一个微不足道的错误。我给其他人的建议是不要忽视“gradle 简介”网站等。解决方案一直存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 2020-08-16
      • 2011-10-30
      相关资源
      最近更新 更多