You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@groovy.apache.org by Charles Monteiro <ch...@gmail.com> on 2016/06/18 23:19:01 UTC

Using a groovy package from jruby

Specifically one created from our source , I mention in case control of
source matters, is this viable?

-- 
Charles Monteiro

On June 18, 2016 at 2:12:54 PM, Mr Andersson (mr.andersson.002@gmail.com)
wrote:

> I was able to get it to work, both as separate groovy and java directories
> and as one directory ( basically a groovy directory with mixed ).
>
> It is interesting how complex this task was. It would appear as if the
> Groovy community should have figured this out by now.
>
> I finally ( after 10 hours ) was able to get it to work, using only ANT.
> The question is why Gmaven, GMaven2 Eclipse maven, and what not is even
> mentioned when it is as simple as an ANT task.
>
> In constract, pulling in Scala and Kotlin ( during the process which I
> gave up on Groovy ) took seconds.
>
> Relying on the Eclipse compiler is not a good thing as it has a history of
> breaking and not being up to date with any other compiler that one might
> wish to use.
>
> The solution ( note that I change some other things as well, like I don't
> use src/main/java but just src ):
>
> <properties>
>     <java.version>1.8</java.version>
>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>     <org.springframework.version>4.0.6.RELEASE</org.springframework.version>
>
>     <skipTests>true</skipTests>
>     <maven.test.skip>true</maven.test.skip>
>
>     <myproject.src>${basedir}/src</myproject.src>
>     <myproject.test>${basedir}/test</myproject.test>
>     <myproject.srcOutput>${project.build.directory}/WEB-INF/classes</myproject.srcOutput>
>     <myproject.testOutput>${project.build.directory}/WEB-INF/classes</myproject.testOutput></properties>
>
>
> <sourceDirectory>${myproject.src}</sourceDirectory><testSourceDirectory>${myproject.src}</testSourceDirectory>
> <!--    This is an important part, especially in development mode, where we treat the compiled output the same as when served through a container, we place in a /WEB-INF/classes/ directory, \    rather than the default /classes/ allowing us to have consistent resources lookup through out all environments--><outputDirectory>${myproject.srcOutput}</outputDirectory><testOutputDirectory>${myproject.srcOutput}</testOutputDirectory
>
>
> <plugin>
>     <inherited>true</inherited>
>     <groupId>org.apache.maven.plugins</groupId>
>     <artifactId>maven-compiler-plugin</artifactId>
>     <version>3.5.1</version>
>     <configuration>
>         <source>${java.version}</source>
>         <target>${java.version}</target>
>
>         <!-- See: http://stackoverflow.com/questions/17944108/maven-compiler-plugin-always-detecting-a-set-of-sources-as-stale -->        <useIncrementalCompilation>false</useIncrementalCompilation>
>     </configuration>
>
>     <executions>
>         <execution>
>             <id>default-compile</id>
>             <phase>none</phase>
>         </execution>
>     </executions></plugin>
> <plugin>
>     <groupId>org.apache.maven.plugins</groupId>
>     <artifactId>maven-antrun-plugin</artifactId>
>     <version>1.8</version>
>     <executions>
>         <execution>
>             <id>groovyc-compile</id>
>             <phase>compile</phase>
>             <configuration>
>                 <target>
>                     <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
>                         <classpath refid="maven.compile.classpath"/>
>                     </taskdef>
>
>                     <mkdir dir="${myproject.src}"/>
>                     <mkdir dir="${myproject.srcOutput}"/>
>                     <groovyc destdir="${myproject.srcOutput}" srcdir="${myproject.src}" listfiles="true">
>                         <classpath refid="maven.compile.classpath"/>
>                         <src>
>                             <pathelement path="${myproject.src}" />
>                         </src>
>
>                         <javac source="1.8" target="1.8" debug="on" encoding="UTF-8"/>
>                     </groovyc>
>
>                 </target>
>             </configuration>
>             <goals>
>                 <goal>run</goal>
>             </goals>
>         </execution>
>     </executions></plugin>
>
>
>
>
> On 06/18/2016 07:34 PM, Schalk W. Cronjé wrote:
>
> I dob't know about Ant, but in Gradle it us eady to get joint-compilation
> of Groovy & Java if eerything is under the src/main/groovy folder.
>
>
>
> Sent from my Samsung device
>
>
> -------- Original message --------
> From: Mr Andersson <mr...@gmail.com>
> <mr...@gmail.com>
> Date: 18/06/2016 18:39 (GMT+01:00)
> To: users@groovy.apache.org
> Subject: Re: Integrating Groovy with a Java EE application and Maven
>
> I have gotten a bit further in my research and came up with this sample
> project which uses ant to compile the groovy classes but I can't get them
> to compile together.
>
> To be able to have cyclic dependencies between Java and Groovy files.
>
> Here is a standalone isolated maven project that contains everything:
>
> http://www.speedyshare.com/TbQyG/Isolated.zip
>
> Pom file:
>
> <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" <http://maven.apache.org/POM/4.0.0> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <http://www.w3.org/2001/XMLSchema-instance> xsi:schem
>  a
> Location="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" <http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd>>
>     <modelVersion>4.0.0</modelVersion>
>
>     <groupId>Isolated</groupId>
>     <name>Isolated</name>
>     <artifactId>Isolated</artifactId>
>     <version>1.0</version>
>     <url>http://maven.apache.org</url>
>
>     <packaging>jar</packaging>
>
>     <properties>
>         <java.version>1.8</java.version>
>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>         <skipTests>true</skipTests>
>         <maven.test.skip>true</maven.test.skip>
>     </properties>
>
>     <dependencies>
>         <dependency>
>             <groupId>org.codehaus.groovy</groupId>
>             <artifactId>groovy-all</artifactId>
>             <version>2.4.6</version>
>         </dependency>
>     </dependencies>
>
>     <build>
>
>         <plugins>
>             <plugin>
>                 <inherited>true</inherited>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-compiler-plugin</artifactId>
>                 <version>3.5.1</version>
>                 <configuration>
>                     <source>${java.version}</source>
>                     <target>${java.version}</target>
>                 </configuration>
>             </plugin>
>
>             <!-- http://groovy-lang.org/groovyc.html#_ant_task -->            <plugin>
>                 <artifactId>maven-antrun-plugin</artifactId>
>                 <executions>
>
>                     <execution>
>                         <id>compile</id>
>                         <phase>compile</phase>
>                         <configuration>
>                             <tasks>
>
>                                 <mkdir dir="${basedir}/src/main/groovy"/>
>
>                                 <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
>                                     <classpath refid="maven.compile.classpath"/>
>                                 </taskdef>
>
>                                 <mkdir dir="${project.build.directory}"/>
>                                 <groovyc destdir="${project.build.outputDirectory}"                                         srcdir="${basedir}/src/main/groovy/" listfiles="true">
>                                     <classpath refid="maven.compile.classpath"/>
>                                 </groovyc>
>
>                             </tasks>
>                         </configuration>
>                         <goals>
>                             <goal>run</goal>
>                         </goals>
>                     </execution>
>
>                 </executions>
>             </plugin>
>         </plugins>
>     </build></project>
>
>
>
>

Re: Using a groovy package from jruby

Posted by Keegan Witt <ke...@gmail.com>.
I don't think the Groovy-Eclipse plugin would be the one most would
recommend at this point.  JRuby and Groovy joint compilations aren't a very
common case, but I'd be happy to look at your GMavenPlus configuration.  It
should work.  Just make sure the stubs get generated.
If you're happy with using AntRun, I'm not gonna tell you to do otherwise.
But I'd appreciate seeing what you tried so I can correct any issues there
might be and/or improve documentation for others.

-Keegan

On Sat, Jun 18, 2016 at 7:19 PM, Charles Monteiro <
charles.monteiro@gmail.com> wrote:

> Specifically one created from our source , I mention in case control of
> source matters, is this viable?
>
> --
> Charles Monteiro
>
> On June 18, 2016 at 2:12:54 PM, Mr Andersson (mr.andersson.002@gmail.com)
> wrote:
>
>> I was able to get it to work, both as separate groovy and java
>> directories and as one directory ( basically a groovy directory with mixed
>> ).
>>
>> It is interesting how complex this task was. It would appear as if the
>> Groovy community should have figured this out by now.
>>
>> I finally ( after 10 hours ) was able to get it to work, using only ANT.
>> The question is why Gmaven, GMaven2 Eclipse maven, and what not is even
>> mentioned when it is as simple as an ANT task.
>>
>> In constract, pulling in Scala and Kotlin ( during the process which I
>> gave up on Groovy ) took seconds.
>>
>> Relying on the Eclipse compiler is not a good thing as it has a history
>> of breaking and not being up to date with any other compiler that one might
>> wish to use.
>>
>> The solution ( note that I change some other things as well, like I don't
>> use src/main/java but just src ):
>>
>> <properties>
>>     <java.version>1.8</java.version>
>>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>     <org.springframework.version>4.0.6.RELEASE</org.springframework.version>
>>
>>     <skipTests>true</skipTests>
>>     <maven.test.skip>true</maven.test.skip>
>>
>>     <myproject.src>${basedir}/src</myproject.src>
>>     <myproject.test>${basedir}/test</myproject.test>
>>     <myproject.srcOutput>${project.build.directory}/WEB-INF/classes</myproject.srcOutput>
>>     <myproject.testOutput>${project.build.directory}/WEB-INF/classes</myproject.testOutput></properties>
>>
>>
>> <sourceDirectory>${myproject.src}</sourceDirectory><testSourceDirectory>${myproject.src}</testSourceDirectory>
>> <!--    This is an important part, especially in development mode, where we treat the compiled output the same as when served through a container, we place in a /WEB-INF/classes/ directory, \    rather than the default /classes/ allowing us to have consistent resources lookup through out all environments--><outputDirectory>${myproject.srcOutput}</outputDirectory><testOutputDirectory>${myproject.srcOutput}</testOutputDirectory
>>
>>
>> <plugin>
>>     <inherited>true</inherited>
>>     <groupId>org.apache.maven.plugins</groupId>
>>     <artifactId>maven-compiler-plugin</artifactId>
>>     <version>3.5.1</version>
>>     <configuration>
>>         <source>${java.version}</source>
>>         <target>${java.version}</target>
>>
>>         <!-- See: http://stackoverflow.com/questions/17944108/maven-compiler-plugin-always-detecting-a-set-of-sources-as-stale -->        <useIncrementalCompilation>false</useIncrementalCompilation>
>>     </configuration>
>>
>>     <executions>
>>         <execution>
>>             <id>default-compile</id>
>>             <phase>none</phase>
>>         </execution>
>>     </executions></plugin>
>> <plugin>
>>     <groupId>org.apache.maven.plugins</groupId>
>>     <artifactId>maven-antrun-plugin</artifactId>
>>     <version>1.8</version>
>>     <executions>
>>         <execution>
>>             <id>groovyc-compile</id>
>>             <phase>compile</phase>
>>             <configuration>
>>                 <target>
>>                     <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
>>                         <classpath refid="maven.compile.classpath"/>
>>                     </taskdef>
>>
>>                     <mkdir dir="${myproject.src}"/>
>>                     <mkdir dir="${myproject.srcOutput}"/>
>>                     <groovyc destdir="${myproject.srcOutput}" srcdir="${myproject.src}" listfiles="true">
>>                         <classpath refid="maven.compile.classpath"/>
>>                         <src>
>>                             <pathelement path="${myproject.src}" />
>>                         </src>
>>
>>                         <javac source="1.8" target="1.8" debug="on" encoding="UTF-8"/>
>>                     </groovyc>
>>
>>                 </target>
>>             </configuration>
>>             <goals>
>>                 <goal>run</goal>
>>             </goals>
>>         </execution>
>>     </executions></plugin>
>>
>>
>>
>>
>> On 06/18/2016 07:34 PM, Schalk W. Cronjé wrote:
>>
>> I dob't know about Ant, but in Gradle it us eady to get joint-compilation
>> of Groovy & Java if eerything is under the src/main/groovy folder.
>>
>>
>>
>> Sent from my Samsung device
>>
>>
>> -------- Original message --------
>> From: Mr Andersson <mr...@gmail.com>
>> <mr...@gmail.com>
>> Date: 18/06/2016 18:39 (GMT+01:00)
>> To: users@groovy.apache.org
>> Subject: Re: Integrating Groovy with a Java EE application and Maven
>>
>> I have gotten a bit further in my research and came up with this sample
>> project which uses ant to compile the groovy classes but I can't get them
>> to compile together.
>>
>> To be able to have cyclic dependencies between Java and Groovy files.
>>
>> Here is a standalone isolated maven project that contains everything:
>>
>> http://www.speedyshare.com/TbQyG/Isolated.zip
>>
>> Pom file:
>>
>> <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" <http://maven.apache.org/POM/4.0.0> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <http://www.w3.org/2001/XMLSchema-instance> xsi:schem
>>  a
>> Location="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" <http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd>>
>>     <modelVersion>4.0.0</modelVersion>
>>
>>     <groupId>Isolated</groupId>
>>     <name>Isolated</name>
>>     <artifactId>Isolated</artifactId>
>>     <version>1.0</version>
>>     <url>http://maven.apache.org</url>
>>
>>     <packaging>jar</packaging>
>>
>>     <properties>
>>         <java.version>1.8</java.version>
>>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>         <skipTests>true</skipTests>
>>         <maven.test.skip>true</maven.test.skip>
>>     </properties>
>>
>>     <dependencies>
>>         <dependency>
>>             <groupId>org.codehaus.groovy</groupId>
>>             <artifactId>groovy-all</artifactId>
>>             <version>2.4.6</version>
>>         </dependency>
>>     </dependencies>
>>
>>     <build>
>>
>>         <plugins>
>>             <plugin>
>>                 <inherited>true</inherited>
>>                 <groupId>org.apache.maven.plugins</groupId>
>>                 <artifactId>maven-compiler-plugin</artifactId>
>>                 <version>3.5.1</version>
>>                 <configuration>
>>                     <source>${java.version}</source>
>>                     <target>${java.version}</target>
>>                 </configuration>
>>             </plugin>
>>
>>             <!-- http://groovy-lang.org/groovyc.html#_ant_task -->            <plugin>
>>                 <artifactId>maven-antrun-plugin</artifactId>
>>                 <executions>
>>
>>                     <execution>
>>                         <id>compile</id>
>>                         <phase>compile</phase>
>>                         <configuration>
>>                             <tasks>
>>
>>                                 <mkdir dir="${basedir}/src/main/groovy"/>
>>
>>                                 <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
>>                                     <classpath refid="maven.compile.classpath"/>
>>                                 </taskdef>
>>
>>                                 <mkdir dir="${project.build.directory}"/>
>>                                 <groovyc destdir="${project.build.outputDirectory}"                                         srcdir="${basedir}/src/main/groovy/" listfiles="true">
>>                                     <classpath refid="maven.compile.classpath"/>
>>                                 </groovyc>
>>
>>                             </tasks>
>>                         </configuration>
>>                         <goals>
>>                             <goal>run</goal>
>>                         </goals>
>>                     </execution>
>>
>>                 </executions>
>>             </plugin>
>>         </plugins>
>>     </build></project>
>>
>>
>>
>>