根据前两个答案:maven dependencies groovy.我正在尝试使用来自org.codehaus.gmaven的GMaven-plugin,使用Maven编译混合Java 6 + Groovy项目.直到昨天我们使用的是旧1.6.0版本的Groovy(在我们最终完成它之后从未改变它),但由于1.7.0现在稳定,我认为我们会改用它.
如果只是那么简单......我现在遇到的问题似乎有两个方面:
Groovy 1.6以某种方式仍然被选为默认值.(如下面的stacktrace中所示)有谁知道如何解决上述两个问题,或者可以提供一个工作pom来编译与Maven Java 6代码混合的Groovy 1.7代码?
使用gmaven/groovy.maven/groovy.maven.gmaven编译旧版本的Groovy时,有很多令人困惑/矛盾/过时的文档,现在真的没有帮助.
作为参考,这是我的pom.xml和Maven -e输出的一部分:
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.2</version>
<dependencies>
<dependency>
<groupId>org.codehaus.gmaven.runtime</groupId>
<artifactId>gmaven-runtime-1.7</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[INFO] ------------------------------------------------------------------------
[INFO] Building Client
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: …Run Code Online (Sandbox Code Playgroud) 我有一些情况,我的一些groovy代码引用我的java文件,但我也有不同的java文件引用相同的groovy代码.当试图在Maven来编译,我要么需要Java之前或之后编译Groovy和不会真正起作用,因为Groovy代码依赖于一些java文件,和不同的Java文件依赖于Groovy代码.有没有办法处理这种依赖?
我有一个项目希望提供一个jar文件:
<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)
但jar是以自定义方式构建的,因此使用jar:jar完成的默认包装已被禁用
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是当我想要应用阴影时:在现有的罐子上涂上阴影我会收到错误
项目主要工件不存在.
我假设maven不知道我的自定义工具创建的.jar文件.如何让它知道,因为antrun attachArtifact不起作用
<attachartifact file="./bin/classes.jar" classifier="" type="jar"/>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
发生了Ant BuildException:org.apache.maven.artifact.InvalidArtifactRTException:对于工件{:jar}:附加工件必须具有与其对应的主工件不同的ID.
所以这不是注册主工件的方法......有没有(没有编写自定义java插件)?
谢谢,卢卡斯
是否有可以使用的maven插件GroovyDoc,最好是作为报告使用?
我猜GMaven是一个值得一看的地方,但是文档是古老的(1.0,而当前版本是1.3),GMaven插件没有任何适合你的mojo:
mvn help:describe -DgroupId=org.codehaus.gmaven -DartifactId=gmaven-plugin
Run Code Online (Sandbox Code Playgroud)
这个插件有9个目标:
groovy:compile
描述:编译Groovy源代码.groovy:console
描述:启动Groovy GUI控制台.groovy:execute
描述:执行Groovy脚本.groovy:generateStubs
描述:从Groovy源生成Java存根.groovy:generateTestStubs
描述:从Groovy测试源生成Java存根.groovy:help
说明:显示有关gmaven-plugin的帮助信息.
调用
mvn groovy:help -Ddetail=true -Dgoal=<goal-name>
以显示参数详细信息.groovy:providers
说明:显示有关配置和选择的Groovy运行时提供程序的信息.groovy:shell
描述:启动Groovy Shell(又名.groovysh).groovy:testCompile
描述:编译Groovy测试源.
那么有没有人有任何指向maven groovydoc插件的指针?谷歌没有提出任何有意义的事情.
我有maven项目机智java和groovy测试.在命令行maven编译中,所有测试都在运行,但在我的IDEA项目(由"AutoImport maven projects"自动创建)中,IDEA将groovy文件复制到/ target/test-classes而不编译它们.
我的gmaven插件看起来像
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<providerSelection>1.7</providerSelection>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud) 每当我执行gmaven插件时,我都会遇到以下问题
org.apache.maven.lifecycle.LifecycleExecutionException: Internal error in the plugin manager executing goal 'org.codehaus.groovy.maven:gmaven-plugin:1.0-rc-5:generateStubs': Mojo execution failed.
我的POM的相关部分如下.有什么想法?
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0-rc-5</version>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<sources>
<fileset>
<directory>${project.build.sourceDirectory}</directory>
<includes>
<include>**/*.groovy</include>
</includes>
<directory>${project.build.testDirectory}</directory>
<includes>
<include>**/*.groovy</include>
</includes>
</fileset>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) 我们有几十个带有maven构建和eclipse作为IDE的java项目.现在我想在这些项目中添加对groovy的支持,所以我不可避免地要使用gmaven插件进行集成.不幸的是,gmaven现在似乎已经放弃了(没有网站更新,JIRA几乎没有任何活动).
考虑到groovy,maven和eclipse是成熟的软件,混合的java/groovy项目并不罕见,我希望有一个可靠的集成解决方案.我知道有些人将他们的构建移动到gradle,但我不愿意为我们的项目添加常规支持而做出如此重大的改变.
那么你们其他人如何处理maven/eclipse环境中的混合groovy/java项目呢?groovy社区推荐的工具链是什么?
注意:我在某种程度上能够通过JIRA的一些源代码修复得到gmaven使用groovy 1.8,但我不认为这是未来的可靠策略.
我们在Groovy中有一些遗留代码,我们想从应用程序中删除Groovy,因此,我们需要获取使用gmaven插件后生成的Java源代码。
基本上,换句话说,我正在动态生成新类(使用gmaven Groovy maven插件),并且我希望能够获取此类生成类的Java源代码。
我研究了一下,可以看到此插件的唯一目标是
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
Run Code Online (Sandbox Code Playgroud)
我看不到任何目标可以让您获得完全实现的Java源代码,存根代码对我们来说还不够,因为我们需要最终的实现源代码来摆脱Groovy。
我正在通过pom.xml中的gmaven插件运行外部groovy脚本.外部脚本是'myscript.groovy'.
我想通过maven pom.xml [即插件'gmaven-plugin'执行内部]为myscript.groovy提供一些参数/参数; 但无法这样做..
我尝试过使用; 但不确定如何在groovy脚本中检索其值.简单地调用properties.get不会给出属性值.
pom文件的快照:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>generate-resources-execute-groovyscript</id>
<phase>generate-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<property>
<name>installation.dir</name>
<value>${installation.dir}</value>
</property>
</properties>
<source>${pom.basedir}/src/main/groovy/configure.groovy</source>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
不确定如何在'configure.groovy'脚本中检索'installation.dir'属性的值.
在这方面的任何暗示将是有用的..谢谢
我需要将一些args传递给通过gmaven执行的groovy脚本.如果我直接在命令行上执行脚本,我就可以做到这一点:
printArgs.groovy ...
for (a in this.args) {
println("Argument: " + a)
}
Run Code Online (Sandbox Code Playgroud)
命令...
$groovy printArgs.groovy fe fi fo fum
Run Code Online (Sandbox Code Playgroud)
输出...
Argument: fee
Argument: fi
Argument: fo
Argument: fum
Run Code Online (Sandbox Code Playgroud)
虽然使用mvn groovy:execute,我无法看到如何通过插件传递这些args.理想情况下,我想在插件配置中设置一些默认参数,但是当我执行命令时能够覆盖它们.如果可能的话,能够将它们作为named-args传递也会很好.
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.3</version>
<configuration>
<source>${pom.basedir}/src/main/resources/printArgs.groovy</source>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
插件文档有点稀缺(也过时).我看到有一个'属性'可选参数,但我不认为这是用于此目的(或者如果它是,我不能让它工作!).
干杯:)
gmaven-plugin ×10
groovy ×9
maven ×7
java ×3
maven-2 ×3
eclipse ×2
args ×1
compilation ×1
dependencies ×1
groovydoc ×1
jar ×1
maven-plugin ×1
parameters ×1