0

感谢 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.jjjavacc

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
$ 
4

0 回答 0