我使用 Intellij UI Designer 为项目创建表单。当我使用 idea 构建时,一切工作正常,因为它为我处理编译表单,但由于我们最近改用 Gradle 进行构建,所以还无法生成可执行的 jar 文件。
我的 google-fu 让我找到了几篇文章,解释了编译需要一个 ant 脚本(例如link https://stackoverflow.com/questions/4547515/ant-build-for-intellij-idea-gui-forms, link2 http://devnet.jetbrains.com/thread/437099, link3 https://stackoverflow.com/questions/10482610/intellij-idea-gui-builder-no-java-code-generated,以及我最后的以下内容:link4 http://grahamedgecombe.com/blog/using-intellij-ideas-javac2-in-gradle)
我的项目是一个多模块设置。
根构建.gradle
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
repositories {
mavenCentral()
}
}
支持项目 build.gradle
apply plugin:'application'
mainClassName = "dk.OfferFileEditor.OfferFileEditorProgram"
configurations {
antTask
}
dependencies {
compile 'org.json:json:20140107'
compile project(":Shared:HasOffers Api")
//dependencies for java2c
antTask files('../../lib/javac2-13.1.1.jar', '../../lib/asm4-all-13.1.1-idea.jar', '../../lib/forms_rt-13.1.1.jar')
antTask group: 'org.jdom', name: 'jdom', version: '1.1'
}
task compileJava(overwrite: true, dependsOn: configurations.compile.getTaskDependencyFromProjectDependency(true, 'jar')) {
doLast {
println 'using java2c to compile'
project.sourceSets.main.output.classesDir.mkdirs()
ant.taskdef name: 'javac2', classname: 'com.intellij.ant.Javac2', classpath: configurations.antTask.asPath
ant.javac2 srcdir: project.sourceSets.main.java.srcDirs.join(':'),
classpath: project.sourceSets.main.compileClasspath.asPath,
destdir: project.sourceSets.main.output.classesDir,
source: sourceCompatibility,
target: targetCompatibility,
includeAntRuntime: false
}
}
但即使编译成功,当我第一次尝试访问 UI 设计器创建的字段之一时,也会引发空指针异常。所以有些东西没有被正确编译。
我可能缺少一些设置,但在论坛和谷歌上投入了几个小时但没有成功后,我仍然没有找到任何解决方案。