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/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」ウィンドウからターゲットを実行します。にいくつかの新しい 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
$