今天同事问我在Maven构建Theme时Liferay框架默认资源文件从何处获取,我对比了下使用Ant来编译部署 Theme和使用Maven来编译部署Theme的过程,发现:在复制框架默认资源文件时,居然是完全不同的策略!
Ant 复制Liferay默认资源文件的策略:
大家都知道,在用Ant编译Theme时,我们程序员需要 在_diffs目录下添加一些和Liferay框架不同的资源文件,而Liferay框架本身的资源文件都会从 $LIFERAY_HOME\tomcat-7.0.23\webapps\ROOT\html\themes目录下复制到你的新建theme项目。
<copy todir="docroot" overwrite="true"> <fileset dir="${app.server.portal.dir}/html/themes/_styled" /> </copy>
Maven复制Liferay默认资源文件的策略:
Maven不会从 ROOT/html/themes复制资源文件,相反,它会从一个叫portal-web-6.1.0.war中复制过来的。这个war包在你 机器~/.m2/repository指向的本地仓库中:比如我的就在 C:\Documents and Settings\charles.wang\.m2 \repository\com\liferay\portal\portal-web\6.1.0 目录下。
而这一切都发生在liferay-maven-plugin生命周期的theme-merge阶段,当我们吧速度放 慢一万倍,我们就可以清楚的看到细节了(太极的精髓啊)。
theme-merge阶段用于吧我们自己开发的资 源文件+系统资源文件merge到artifact中:
首先它会定义相关的环境配置:
[DEBUG] ----- ------------------------------------------------------------------ [DEBUG] Goal: com.liferay.maven.plugins:liferay-maven-plugin:6.1.0:theme-merge (default) [DEBUG] Style: Regular [DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> <configuration> <liferayVersion>6.1.0</liferayVersion> <localArtifactRepository>${localRepository}</localArtifactRepository> <parentTheme default-value="_styled">_styled</parentTheme> <remoteArtifactRepositories>${project.remoteArtifactRepositories} </remoteArtifactRepositories> <themeType default-value="vm">vm</themeType> <webappDir>${project.build.directory}/${project.build.finalName}</webappDir> <workDir>${project.build.directory}/liferay-theme/work</workDir> </configuration>
最终执行theme-merge对应的类,位于liferay-maven-plugin-6.1.0.jar的 ThemeMergeMojo类,类中用到的所有的参数都是写在配置文件然后传递进去的:
这些参数和你的运行 Maven命令的机器有关,因为你毕竟设置了~/.m2/repository本地仓库,而且你也设置了pom.xml,在我机器上 这些参数的细节可以见02-16行:
01.[DEBUG] Configuring mojo 'com.liferay.maven.plugins:liferay-maven-plugin:6.1.0:theme-merge' with basic configurator -- >
02.[DEBUG] (f) liferayVersion = 6.1.0
03.[DEBUG] (f) localArtifactRepository = id: local
04. url: file:///C:/Documents%20and%20Settings/charles.wang/.m2/repository/
05. layout: none
06.
07.[DEBUG] (f) parentTheme = _styled
08.[DEBUG] (f) remoteArtifactRepositories = [ id: central
09. url: http://repo1.maven.org/maven2
10. layout: default
11.snapshots: [enabled => false, update => daily]
12.releases: [enabled => true, update => daily]
13.]
14.[DEBUG] (f) themeType = vm
15.[DEBUG] (f) webappDir = D:\WalmartProject\maven-build-theme\target\maven-build-theme-0.0.1 -SNAPSHOT
16.[DEBUG] (f) workDir = D:\WalmartProject\maven-build-theme\target\liferay-theme\work
17.[DEBUG] -- end configuration –
18.[DEBUG] Expanding: C:\Documents and Settings\charles.wang\.m2 \repository\com\liferay\portal\portal-web\6.1.0\portal-web-6.1.0.war into D:\WalmartProject\maven-build-theme\target\liferay-theme\work (这一行就是从何处获取资源文件的日 志)
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索maven
, debug
, 文件
, themes
, maven dependencie
, maven 2
, repository
, maven 编译 trunk
, maven war
, liferay
, maven setting
, 资源
debug 非常慢
liferay6.2 theme部署、liferay theme、liferay theme 开发、liferay 7 theme开发、liferay theme js,以便于您获取更多的相关知识。