0

Android-Studio のおかげで、Android 以外のプロジェクトに IntelliJ Idea を使用しようとしています。

IntelliJ の Community バージョンの最新バージョン (12.1.4) をインストールしました。いくつかのクラスと JavaCC 文法定義を使って簡単なテスト プロジェクトを作成し、試してみました。コマンドラインから、ant スクリプトはプロジェクトを問題なくビルドします。

Ant 構築の観点からは、すべてが適切に構成されています。

しかし、私は IntelliJ 内でうまく動作していません。文法ファイルから生成された Java ソースを更新するために実行される ant スクリプトのその部分があります。「Make」の直前に、javaCC を実行する Ant タスクが毎回呼び出されることをログで確認できます。

しかし、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/javaJavaCC を実行して生成されたすべてのソース (適切なパッケージ サブディレクトリ内) があります。では、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」ウィンドウからターゲットを実行します。にいくつかの新しい Java クラスが表示され${PROJECT_BASE}/out/srcます。

7)。"Project Structure -> Modules -> Paths" で "Use module output path" を選択し、"Exclude output paths" の選択を解除します。

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