How to deploy a theme in liferay?

可紊 提交于 2019-12-23 05:32:19

问题


I am trying to check if my theme project is running with the different version.

I downloaded all the versions that i need (6.2: ga1,ga2,ga3,ga4,ga5,ga6) and I configured the servers and the sdk for each server.

I did (Import -> liferay projects from plugins SDK). In the import window I got a message:

SDK version and Liferay runtime version may not be compatible.

I imported the theme and I tried to deploy it (liferay -> deploy) but I got an error:

Error running SDK command deploy java.lang.NullPointerException

I am using Eclipse Kepler-4.3 and Liferay 6.2.

Error Description

I tried Run As-> Ant Build

I got this error:

Buildfile: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\material-admin\Material-admin-theme\build.xml

BUILD FAILED D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\material-admin\Material-admin-theme\build.xml:5: Cannot find D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\material-admin\build-common-theme.xml imported from D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\material-admin\Material-admin-theme\build.xml

Total time: 1 second

Update 1:

I tried to use ant deploy but I got an error:

compile: D:\FormationJEE\Liferay\Liferay-6.2.0-ce-ga1\liferay-plugins-sdk-6.2.0-ce-ga1-20131101192857659\bundles \tomcat-7.0.42\lib\ext does not exist. at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:495) at org.apache.tools.ant.types.FileSet.iterator(FileSet.java:70) at org.apache.tools.ant.types.resources.Union.getAllResources(Union.java:148) at org.apache.tools.ant.types.resources.Union.getCollection(Union.java:108) at org.apache.tools.ant.types.resources.BaseResourceCollectionContainer.cacheCollection(BaseResourc eCollectionContainer.java:263) at org.apache.tools.ant.types.resources.BaseResourceCollectionContainer.iterator(BaseResourceCollec tionContainer.java:142) at org.apache.tools.ant.types.Path.iterator(Path.java:709) at org.apache.tools.ant.types.Path.iterator(Path.java:702) at org.apache.tools.ant.types.resources.Union.getAllResources(Union.java:148) at org.apache.tools.ant.types.resources.Union.getAllToStrings(Union.java:128) at org.apache.tools.ant.types.resources.Union.list(Union.java:87) at org.apache.tools.ant.types.Path.list(Path.java:378) at org.apache.tools.ant.types.Path.addExisting(Path.java:330) at org.apache.tools.ant.types.Path.addExisting(Path.java:318) at org.apache.tools.ant.types.Path.concatSpecialPath(Path.java:569) at org.apache.tools.ant.types.Path.concatSystemClasspath(Path.java:529) at org.apache.tools.ant.AntClassLoader.setClassPath(AntClassLoader.java:363) at org.apache.tools.ant.AntClassLoader.(AntClassLoader.java:277) at org.apache.tools.ant.AntClassLoader.(AntClassLoader.java:298) at org.apache.tools.ant.AntClassLoader.newAntClassLoader(AntClassLoader.java:1562) at org.apache.tools.ant.Project.createClassLoader(Project.java:345) at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:130) at org.apache.tools.ant.taskdefs.Java.run(Java.java:834) at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:228) at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:137) at org.apache.tools.ant.taskdefs.Java.execute(Java.java:110) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:402) at net.sf.antcontrib.logic.ForTask.doSequentialIteration(ForTask.java:259) at net.sf.antcontrib.logic.ForTask.doToken(ForTask.java:268) at net.sf.antcontrib.logic.ForTask.doTheTasks(ForTask.java:324) at net.sf.antcontrib.logic.ForTask.execute(ForTask.java:244) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:155) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) at org.apache.tools.ant.Project.executeTarget(Project.java:1376) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1260) at org.apache.tools.ant.Main.runBuild(Main.java:857) at org.apache.tools.ant.Main.startAnt(Main.java:236) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113) Java Result: -1

BUILD FAILED

How to deploy a theme in liferay using the IDE and the Ant line command?

Update 2:

I moved the directory higher and I imported the project.

First I tested the GA1 version and I did (liferay -> deploy) it worked. Then when I tried to import the project for GA2, i got a message:

SDK version and Liferay runtime version may not be compatible.

The following picture shows the details:

In the Liferay target runtime, if I select a configuration for the SDK: GA2, GA3, GA4, GA5, GA6.

For example:

  • Liferay Plugins SDK: liferay-plugins-sdk-6.2 (GA2)
  • Liferay target runtime: Liferay v6.2 CE (GA2) (Tomcat 7)

Only if I select Liferay v6.2 SE (GA1) (Tomcat 7), The message gone.

If I select a configuration like this (GA2-GA2), ... ,(GA6-GA6) the message appeared.

If I select a configuration like this (GA1-GA1), (GA2-GA1), ... ,(GA6-GA1) the message gone.

For (GA1-GA1) he has no problems.

After I imported the project, I have this error message:

[Console output redirected to file:D:\FormationJEE\Liferay\workspace.metadata.plugins\com.liferay.ide.sdk.core\sdk.log] Buildfile: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\Material-admin-theme\build.xml [ivy:resolve] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ :: [ivy:resolve] :: loading settings :: file = D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\ivy-settings.xml [ivy:resolve] :: problems summary :: [ivy:resolve] :::: WARNINGS [ivy:resolve] module not found: biz.aQute#bnd;2.3.0 [ivy:resolve] ==== asu-gibson: tried [ivy:resolve]
https://gibson.asu.edu/maven/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
https://gibson.asu.edu/maven/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== jboss-nexus: tried [ivy:resolve]
https://repository.jboss.org/nexus/content/repositories/releases/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
https://repository.jboss.org/nexus/content/repositories/releases/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== jboss-thirdparty: tried [ivy:resolve]
https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== maven2: tried [ivy:resolve]
http://repo1.maven.org/maven2/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
http://repo1.maven.org/maven2/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== ow2-public: tried [ivy:resolve]
http://repository.ow2.org/nexus/content/repositories/public/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
http://repository.ow2.org/nexus/content/repositories/public/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== primefaces: tried [ivy:resolve]
http://repository.primefaces.org/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
http://repository.primefaces.org/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== liferay-public: tried [ivy:resolve]
https://repository.liferay.com/nexus/content/groups/public/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
https://repository.liferay.com/nexus/content/groups/public/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== pentaho: tried [ivy:resolve]
http://repository.pentaho.org/artifactory/repo/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
http://repository.pentaho.org/artifactory/repo/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] ==== soapui: tried [ivy:resolve]
http://www.soapui.org/repository/maven2/biz/aQute/bnd/2.3.0/bnd-2.3.0.pom [ivy:resolve] -- artifact biz.aQute#bnd;2.3.0!bnd.jar: [ivy:resolve]
http://www.soapui.org/repository/maven2/biz/aQute/bnd/2.3.0/bnd-2.3.0.jar [ivy:resolve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:resolve] :: UNRESOLVED DEPENDENCIES :: [ivy:resolve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:resolve] :: biz.aQute#bnd;2.3.0: not found [ivy:resolve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:resolve] [ivy:resolve] [ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

BUILD FAILED D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\Material-admin-theme\build.xml:5: The following error occurred while executing this line: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\themes\build-common-theme.xml:5: The following error occurred while executing this line: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\build-common-plugin.xml:5: The following error occurred while executing this line: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\build-common.xml:47: The following error occurred while executing this line: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\build-common-ivy.xml:34: The following error occurred while executing this line: D:\FormationJEE\Liferay\Liferay-6.2-ce-ga2\liferay-plugins-sdk-6.2-ce-ga2-20140319114139101\liferay-plugins-sdk-6.2\build-common-ivy.xml:50: impossible to resolve dependencies: resolve failed - see output for details

Total time: 11 seconds

Update 3:

I had a compatibility problem with SDK version and Liferay runtime.

I tried to create build.yoursystemusername.properties file inside the plugin sdk.

These two lines deleted several errors for some version:

    ivy.jar.url=http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar
ivy.version=2.3.0

When I tried to deploy the GA6 version I had this error: File name or extension too long

D:\FormationJEE\Liferay\Liferay-6.2-ce-ga6\liferay-plugins-sdk-6.2-ce-ga6-20160112152609836\liferay-plugins-sdk-6.2\build-common.xml:178: java.io.IOException: Cannot run program "D:\Program Files\Java\jdk1.8.0_144\jre\bin\java.exe": CreateProcess error=206, Nom de fichier ou extension trop long

Update 3:

To fix the error: File name or extension too long I renamed the names of the liferay-sdk and liferay-tomcat directories to short names like sdk and tomcat.

I tried to deploy a theme on the version GA6 but I got this error:

[echo] Loading jar:file:/D:/FormationJEE/Liferay/LiferayGA5/tomcat/liferay-portal-6.2-ce-ga5/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties [echo] Loading jar:file:/D:/FormationJEE/Liferay/LiferayGA5/tomcat/liferay-portal-6.2-ce-ga5/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties [echo] Sass::SyntaxError: Invalid CSS after "...ow-x: hidden\0/": expected expression (e.g. 1px, bold), was ";" [echo]
expected at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:1147 [echo] expected! at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/lexer.rb:199 [echo] assert_expr at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:471 [echo] times_div_or_mod at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:233 [echo] plus_or_minus at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:225 [echo] relational at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:225 [echo] eq_or_neq at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:225 [echo] and_expr at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:225 [echo] or_expr at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:225 [echo] space at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:298 [echo] expr at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:246 [echo] send at org/jruby/RubyKernel.java:2093 [echo] assert_expr at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:470 [echo] parse at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/script/parser.rb:49 [echo] send at org/jruby/RubyKernel.java:2093 [echo] sass_script at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:1021 [echo] value! at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:881 [echo] declaration at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:858 [echo] declaration_or_ruleset at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:581 [echo] call at org/jruby/RubyProc.java:270 [echo] call at org/jruby/RubyProc.java:220 [echo] rethrow at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:1122 [echo] declaration_or_ruleset at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:591 [echo] block_child at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:553 [echo] block_contents at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:542 [echo] block at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:534 [echo] ruleset at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:528 [echo] block_child at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:552 [echo] block_contents at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:545 [echo] stylesheet at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:82 [echo] parse at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/scss/parser.rb:27 [echo] _to_tree at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/engine.rb:342 [echo] _render at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/engine.rb:315 [echo] render at C:/Users/MARWEN~1/AppData/Local/Temp/liferay/ruby/gems/sass-3.2.12/lib/sass/../sass/engine.rb:262 [echo] (root) at :48 [echo] Unable to parse /css/app.css [echo] Exception in thread "main" org.jruby.embed.EvalFailedException: (SyntaxError) Invalid CSS after

In the file css/app.css of the theme project line 7837: overflow-x: hidden\0/; If I correct it and I deploy the theme, the same line comes back again.


回答1:


You have a weird collection of versions there. Do not use all of GA1-6, rather opt for one (the latest).

And on the rest: You're building some theme and the build process is missing a file. Note that your theme's build file is \liferay-plugins-sdk-6.2\themes\material-admin\Material-admin-theme\build.xml. Open that file and check what it includes: You'll find ../build-common-theme.xml, which is exactly the missing file. Search for the file, and you'll find it one directory further up. This will tell you that Plugin SDK has not been built for themes being stored two levels down from the SDK's root directory. I'd recommend to move your theme one level up, but you might have luck with changing the build file include in your theme's build.xml

As of the NullpointerException: Not enough information here. But when your theme doesn't build at all, no wonder that something isn't working as expected.




回答2:


I should use one sdk 6.2 GA1 and deploy it on different portal. I have to leave the SDK to GA1 and change only the Liferay target runtime.

For example:

  • Liferay Plugins SDK: liferay-plugins-sdk-6.2 (GA1)
  • Liferay target runtime: Liferay v6.2 CE (GA2) (Tomcat 7)

The theme works well in all versions.



来源:https://stackoverflow.com/questions/46890995/how-to-deploy-a-theme-in-liferay

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!