感谢 Android-Studio,我现在正尝试将 IntelliJ Idea 用于我的非 Android 项目。
我已经安装了 IntelliJ 社区版的最新版本(12.1.4)。我创建了一个简单的测试项目,其中包含几个 JavaCC 语法定义类来尝试。ant 脚本可以从命令行很好地构建项目。
从 Ant 构建的角度来看,我的一切配置都很好。
但我还没有完全在 IntelliJ 中工作。我确实执行了 ant 脚本的那一部分,以从语法文件更新生成的 Java 源代码。我可以在日志中看到每次都调用运行 javaCC 的 ant 任务,就在“Make”之前。
但是 IntelliJ 并没有“看到”树的那部分。
在“文件->项目结构->模块”中,我配置了源路径:
<project-root>
build
classes <- Excluded
java <- Sources
libs
src
main
java <- Sources
javacc <- Place where grammar file lives.
test
data
java <- Test sources
在来源列表中,它报告了以下内容:
Source Folders
src/main/java
build/java
Test Source Folder
src/test/java
其中build/java
是运行 JavaCC 生成的所有源(在相应的包子目录中)。那么为什么 IntelliJ 不接他们呢?
一如既往地感谢您的帮助。
史蒂夫
更新
我的电脑运行 Linux,确切地说是 Debian,JavaCC 已安装到 /usr/share/java。
1)。创建一个新项目“测试”
2)。在项目根目录下创建一个新目录:javacc
.
3)。将以下文件添加Test.jj
到javacc
options {
STATIC = false;
}
PARSER_BEGIN(Test)
package com.example;
import java.io.StringReader;
public class Test {
private boolean mIsBaseball = false;
public Test(final String text) {
this(new StringReader(text));
}
}
PARSER_END(Test)
TOKEN: { <DOT: "."> }
TOKEN: { <SLASH: "/"> }
void dummy():
{
}
{
<SLASH> <DOT>
}
4)。build.xml
在项目库中添加了以下 ant 脚本。
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<project name="test" default="all" basedir=".">
<property name="pkg.name" value="test"/>
<property name="dir.src.java" value="${basedir}/src/"/>
<property name="dir.src.javacc" value="${basedir}/javacc"/>
<property name="dir.test.java" value="${basedir}/out/src"/>
<property name="dir.class" value="${basedir}/out/Test"/>
<target name="grammar">
<mkdir dir="${basedir}"/>
<mkdir dir="${basedir}/out/"/>
<mkdir dir="${dir.test.java}"/>
<mkdir dir="${dir.test.java}/com"/>
<mkdir dir="${dir.test.java}/com/example"/>
<javacc
target="${dir.src.javacc}/Test.jj"
outputdirectory="${dir.test.java}/com/example"
javacchome="/usr/share/java/"
debugparser="true" />
</target>
<target name="compile" depends="grammar">
<mkdir dir="${dir.class}"/>
<javac destdir="${dir.class}"
includeantruntime="false"
debug="on">
<compilerarg value="-Xlint:-path"/>
<src path="${dir.src.java}"/>
<src path="${dir.test.java}"/>
</javac>
</target>
</project>
5)。在“Ant Build”窗口中注册新的构建脚本。
6)。gammar
从“And Build”窗口运行目标。您应该会在${PROJECT_BASE}/out/src
.
7)。在“项目结构 -> 模块 -> 路径”中选择“使用模块输出路径”并取消选择“排除输出路径”
6)。在“Project Structure -> Modules -> Sources”中添加“out -> src”作为源目录。两者都src
应该out/scr
是唯一的列表。
8)。编辑Main.java
如下:
package com.example;
import com.example.Test;
public class Main {
public static void main(String[] args) {
try {
Test test = new Test("/.");
test.dummy();
} catch (Throwable cause) {
cause.printStackTrace();
}
}
}
如您所见,生成的源是不可见的(我可以在我的)。
9)。从命令行你可以很愉快地编译和运行东西。
$ ant
$ java -cp out/Test com.example.Main
Call: dummy
Consumed token: <"/" at line 1 column 1>
Consumed token: <"." at line 1 column 2>
Return: dummy
$