On Thu, Apr 8, 2010 at 4:57 PM, Armando Blancas
<[email protected]> wrote:
>> Looks cool. This should help the XML-allergic :)
>
> Though I don't like it, the XML is the least of my problems. Don't
> know what to do or even where to start. I want to do the following in
> maven or pmaven, but anything beyond their Hello World example has
> been a real struggle :-( Any pointers?
>
The steps are:
Add antlr3-maven-plugin to your Project Object Model (pom).
In maven xml it looks like:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>antlr3-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>antlr</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
I'm guessing that in the new polyglot world it would look something like:
(defmaven
; ... other stuff that defines your project name, version, etc
:build [:plugins [['org.codehaus.mojo/antlr3-maven-plugin "1.0"
:executions [[:goals ["antlr"]]]]]]]) ; Who
knows if I got the braces correct
Which already seems like a pretty big improvement to me.
As a result you would be able to:
(The following all assumes that your *.g files are in src/main/antlr,
where maven looks by default, more details at:
http://mojo.codehaus.org/antlr3-maven-plugin/)
> -- Generate Java code from an ANTLR lexer:
> java -cp ... org.antlr.Tool Scanner.g
mvn -f project.clj generate-sources
(the resulting java files end up in the
"target/generated-sources/antlr" directory by default)
> -- Compile the scanner and an exception class:
> javac -cp ... Scanner.java ExitException.java
I'm not sure how you'd do this in a maven-only world. I guess you'd
have to do "java -cp target/generated-sources/antlr/*.java", not sure
why you'd want to though.
I guess one way would be to put your antlr stuff in its own
sub-project and then "mvn -f project.clj compile".
> -- Compile the clojure program using the above classes
> java -Dclojure.compile.path=... -cp ... clojure.lang.Compile prog.main
mvn -f project.clj compile
(You can also skip straight to this if you want, the antlr files
should be processed automatically into java for you, you'd also need
to add the maven-clojure-plugin to your plugins to be able to do
compile clojure code and do something like "mvn repl")
> -- Package incl. the antlr runtime inside the jar
> jar -x ...
> jar cMf prog.jar ... *.class
mvn -f project.clj package
(The resulting jar file ends up in
"target\project_name-module_name-<version>.jar by default. A file
called "target\project_name-module-name-<version>-sources.jar" is also
automatically created containing all your source code. I don't think,
however, that it adds the antlr runtime to your jar)
For more complicated packaging (such as adding the antlr runtime),
you'd use the maven-assembly-plugin to add arbitrary stuff to your
resulting jar. It's a little more complicated, and requires its own
xml.
http://maven.apache.org/plugins/maven-assembly-plugin/
> - clean up: delete the generated Java classes, the .tokens file, the
> expanded antl runtime, all .class files
mvn -f project.clj clean
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en