Intellij Idea 13 UI Designer和自动Gradle构建
我使用Intellij UI Designer为项目创建表单。 当我正在处理为我编译表单时,一切正常,但是当我们最近切换到使用Gradle构建它时,还不可能生成可执行的jar文件。
我的google-fu引导我发了几篇文章,说明需要编译一个ant脚本(例如link , link2 , link3 ,以及我在下面结束的那个 : link4 )
我的项目是一个多模块设置。
root build.gradle
subprojects { apply plugin: 'java' apply plugin: 'idea' repositories { mavenCentral() } }
supproject 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 Designer创建的字段时,也会抛出Nullpointerexception。 所以没有正确编译的东西。
我可能错过了一些设置,但在不知不觉地向论坛和谷歌倾注了几个小时之后我仍然没有找到任何解决方案。
所以我把它变得比需要的要复杂得多。
要使其工作,您需要更改项目中的两件事。
IDEA 13.1.5中的设置
设置 – > GUI Designer – >将GUI生成为: Java源代码
这使得IntelliJ IDEA在表单的底部添加了3种方法:
- $$$ setupUI $$$()
- $$$ setupUI $$$()
- $$$ getRootComponent $$$()
如果缺少它们,请在更改设置后重新编译项目。
添加缺少的类
Intellij有一个名为forms_rt.jar的jar,我在{IntelliJ IDEA Root} \ lib中找到了我的jar。 并将其重命名为“ forms_rt-13.1.1.jar ”
这需要在编译期间包含在项目中。 如果你像我一样使用Gradle,你可以将它复制到{project root} / lib并添加一个flatfile存储库,如下所示:
repositories { mavenCentral() flatDir dirs: "${rootDir}/lib" }
之后,您需要将其包含在项目gradle文件中:
dependencies { compile name: 'forms_rt', version: '13.1.1' }
之后,应该可以在IntelliJ IDEA和Gradle中构建它。
forms_rt
库位于mavenCentral中。 http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22forms_rt%22
一旦配置了IntelliJ来更新SourceCode,只需将库添加到build.gradle
的依赖项就足够了。
dependencies { compile 'com.intellij:forms_rt:7.0.3' }