Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven Liferay的父Pom生成问题_Maven_Liferay - Fatal编程技术网

Maven Liferay的父Pom生成问题

Maven Liferay的父Pom生成问题,maven,liferay,Maven,Liferay,我正试图建立一个基于maven的小型项目结构,如下所示 马文结构 正如您所看到的,在项目下有两个portlet(在将来的主题中,相同结构下的钩子等) 现在,在各个Portlet中,我可以运行与liferay相关的maven任务,通过点击mvn clean compile package liferay:deploy 现在,我希望使用相同的命令构建和部署所有与Liferay portlet相关的构件。在这种情况下,我得到了父项目本身的一个错误(子liferay模块正在正常构建)。我不知道为什么它也

我正试图建立一个基于maven的小型项目结构,如下所示

马文结构 正如您所看到的,在项目下有两个portlet(在将来的主题中,相同结构下的钩子等)

现在,在各个Portlet中,我可以运行与liferay相关的maven任务,通过点击mvn clean compile package liferay:deploy 现在,我希望使用相同的命令构建和部署所有与Liferay portlet相关的构件。在这种情况下,我得到了父项目本身的一个错误(子liferay模块正在正常构建)。我不知道为什么它也试图构建父项目,尽管我的目的只是在子项目中运行liferay:deploy相关任务

儿童POM 下面是child的pom.xml(这是在创建portlet时默认生成的)


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>