使用Ant的Intellij Building

时间:2013-07-08 13:12:37

标签: ant intellij-idea

感谢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)。将以下ant脚本build.xml添加到项目库中。

<?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目标。您应该在${PROJECT_BASE}/out/src中看到一些新的Java类。

7)。在“项目结构 - &gt;模块 - &gt;路径”中选择“使用模块输出路径”并取消选择“排除输出路径”

6)。在“项目结构 - &gt;模块 - &gt;来源”中添加“out - &gt; src”作为源目录。 srcout/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
$ 

0 个答案:

没有答案