如何通过 Maven pom.xml 安装 Grails 插件?
Posted
技术标签:
【中文标题】如何通过 Maven pom.xml 安装 Grails 插件?【英文标题】:How to install Grails plugins through Maven pom.xml? 【发布时间】:2011-12-28 21:09:04 【问题描述】:我正在使用 Maven 构建一个 Grails 项目,这是在我的公司构建所需的方式。
在我的本地机器上,我以通常的方式grails install-plugin foo
安装了一个 Grails 插件。当然,当项目在构建服务器上由Maven构建时,它对这个插件一无所知。
我已经看到,对于 Grails 的插件目录中的插件可用的情况,以下内容可能很有用:
<plugin>
<groupId>org.grails</groupId>
<artifactId>grails-maven-plugin</artifactId>
<version>1.1</version>
<extensions>true</extensions>
<executions>
<execution>
<id>create plugins folder</id>
<phase>validate</phase>
<goals>
<goal>install-plugin</goal>
</goals>
<configuration>
<pluginUrl>$env.GRAILS_HOME/plugins/grails-hibernate-1.1.zip</pluginUrl>
</configuration>
</execution>
</executions>
</plugin>
但是假设插件根本不在机器上?如果 Maven 或 Grails 需要上网查找插件,pluginUrl
会是什么?
编辑:
我发现pluginName
和pluginVersion
标签很有用,我在grails-maven-plugin
中添加了以下执行:
<execution>
<id>Hibernate plugin</id>
<phase>validate</phase>
<goals>
<goal>install-plugin</goal>
</goals>
<configuration>
<pluginName>hibernate</pluginName>
<pluginVersion>1.3.7</pluginVersion>
</configuration>
</execution>
这几乎有效。如果我在新目录中签出我的代码,并删除我的插件目录的内容,Maven 能够构建项目,成功找到所有插件依赖项。
但它仍然无法在构建服务器上运行。有什么想法吗?
【问题讨论】:
【参考方案1】:尝试将此依赖项添加到您的 pom.xml 中
<dependency>
<groupId>org.grails.plugins</groupId>
<artifactId>fields</artifactId>
<version>1.3</version>
<type>zip</type>
<scope>runtime</scope>
</dependency>
当您重新编译您的应用程序时,maven 将下载并安装插件
【讨论】:
谢谢@Cris!我不认为我会在 2011 年回到这个项目(在另一家公司),但这些信息可能会让其他人受益。【参考方案2】:您需要使用 Grails Maven 插件,因此 pom 将随着插件列表的更改而更新。看看Grails documentation describing Maven integration,尤其是关于“mavenizing”项目的部分。
【讨论】:
你是说要做mvn org.grails:grails-maven-plugin:1.3.2:create-pom -DgroupId=com.mycompany
吗?这就是我最初获得 pom.xml 的方式。你是说同样的命令可以用来更新 Grails 插件的 pom 吗?
不,grails 插件应该选择新安装的插件并将它们添加到构建中。您能否检查application.properties
文件是否已签入版本控制以及它是否包含您需要的所有插件?
application.properties
已签入,其中包含所有已安装插件的名称和版本。
我讨厌“为我工作”的答案,但即使没有手动指定插件,它也应该可以工作。所以也许你应该检查构建服务器上的 Maven 安装?也许它在不同的版本中或在 ~/.m2/settings.xml 中有一些奇怪的东西?以上是关于如何通过 Maven pom.xml 安装 Grails 插件?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Maven2 pom.xml 获取 Hibernate + javax.persistence