Maven Liferay的父Pom生成问题
我正试图建立一个基于maven的小型项目结构,如下所示 马文结构 正如您所看到的,在项目下有两个portlet(在将来的主题中,相同结构下的钩子等) 现在,在各个Portlet中,我可以运行与liferay相关的maven任务,通过点击mvn clean compile package liferay:deploy 现在,我希望使用相同的命令构建和部署所有与Liferay portlet相关的构件。在这种情况下,我得到了父项目本身的一个错误(子liferay模块正在正常构建)。我不知道为什么它也试图构建父项目,尽管我的目的只是在子项目中运行liferay:deploy相关任务 儿童POM 下面是child的pom.xml(这是在创建portlet时默认生成的)Maven Liferay的父Pom生成问题,maven,liferay,Maven,Liferay,我正试图建立一个基于maven的小型项目结构,如下所示 马文结构 正如您所看到的,在项目下有两个portlet(在将来的主题中,相同结构下的钩子等) 现在,在各个Portlet中,我可以运行与liferay相关的maven任务,通过点击mvn clean compile package liferay:deploy 现在,我希望使用相同的命令构建和部署所有与Liferay portlet相关的构件。在这种情况下,我得到了父项目本身的一个错误(子liferay模块正在正常构建)。我不知道为什么它也
4.0.0
com.test
地狱世界
战争
hello world portlet
1
com.liferay.maven.plugins
liferay maven插件
${liferay.version}
${liferay.auto.deploy.dir}
${liferay.version}
${service.api.dir}
${war.file.name}
门户组件
maven编译器插件
UTF-8
1.6
1.6
org.codehaus.mojo
构建助手maven插件
1.3
添加源
生成源
添加源
${service.api.dir}
maven资源插件
UTF-8
com.liferay.portal
门户服务
${liferay.version}
假如
com.liferay.portal
util桥
${liferay.version}
假如
com.liferay.portal
util标记库
${liferay.version}
假如
com.liferay.portal
util java
${liferay.version}
假如
javax.portlet
portlet api
2
假如
javax.servlet
servlet api
2.4
假如
javax.servlet.jsp
jsp api
2
假如
D:/Projects/Bosch/Liferay Developer Studio/Liferay-portal-6.1.10-ee-ga1/deploy
6.1.10
6.1.0
hellow-world-portlet.war
src/main/java服务api
母体聚甲醛
下面是parent的pom.xml。(这是我手动创建的谷歌搜索和添加模块)
4.0.0
com.test
MVN项目
1
聚甲醛
IPCPortlet
地狱世界
UTF-8
朱尼特
朱尼特
3.8.1
测试
错误
这是我得到的错误
[信息]------------------------------------------------------------------------
[信息]反应堆概要:
[信息]
[信息]ipc portlet。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。成功[5.361s]
[信息]hello world portlet。。。。。。。。。。。。。。。。。。。。。。。成功[1.047s]
[信息]MVN项目。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。故障[2.500秒]
[信息]------------------------------------------------------------------------
[信息]生成失败
[信息]------------------------------------------------------------------------
[信息]总时间:9.236秒
[信息]完成时间:2012年5月25日星期五16:49:12
[信息]最终内存:7M/14M
[信息]------------------------------------------------------------------------
[错误]在当前项目和p中未找到前缀“liferay”的插件
lugin groups[org.apache.maven.plugins,org.codehaus.mojo]可从re
位置[本地(C:\Documents and Settings\sandeep.nair\.m2\repository),中心
艾尔(http://repo.maven.apache.org/maven2)]->[帮助1]
正如您所看到的,对于我想要的子模块,构建是成功的。但它也试图为父级执行它。如何避免发生第三次构建,即父项目的构建。您必须向
设置.xml添加自定义插件组
,如下所示:
com.liferay.maven.plugins
然后,您可以使用第三方插件进行类似liferay:deploy
这样的简短调用。查看以了解更多详细信息。当针对具有子模块的项目执行Maven时,Maven首先加载父POM并定位所有子模块POM。然后,Maven将所有这些项目POM放入称为Maven Reactor的东西中,Maven Reactor分析模块之间的依赖关系。反应堆负责订购组件,以确保相互依赖的模块以正确的顺序编译和安装。最后,它使用相同的命令执行父项目
子项目可以成功构建,因为您在子poms中声明了liferay插件,当它尝试对父项目执行相同的命令时失败
解决方案:
选项1:将那些liferay插件声明移动到父pom
选项2:遵循@Michal Kalinowski方法为了解决这个问题,我遵循了下面的方法,它是有效的。
我的项目结构:
--liferay-core
|
-- portlet-one
|
-- portlet-two
|
-- theme-one
|
-- hook-one
这里是liferay核心模块
--liferay-core
|
-- portlet-one
|
-- portlet-two
|
-- theme-one
|
-- hook-one
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>liferay-core</artifactId>
<groupId>xxxx</groupId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>liferay-plugins</name>
<modules>
<module>./../portlet-clientsearch</module>
<module>./../portlet-permission</module>
<module>./../qpt-theme</module>
<module>./../hook-post-login</module>
<module>./../hook-quote-portal-autologin</module>
<module>./../hook-post-logout</module>
</modules>
<properties>
<liferay.auto.deploy.dir>C:/liferay-portal-6.1.20-ee-ga2/deploy</liferay.auto.deploy.dir>
<liferay.version>6.1.20</liferay.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.liferay.maven.plugins</groupId>
<artifactId>liferay-maven-plugin</artifactId>
<version>${liferay.version}</version>
<configuration>
<autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
<appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
<appServerLibGlobalDir>${liferay.app.server.lib.global.dir}</appServerLibGlobalDir>
<appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
<liferayVersion>${liferay.version}</liferayVersion>
<pluginType>portlet</pluginType>
</configuration>
</plugin>
</plugins>
</build>