Liferay ext插件 - 在util-java中重写java类

时间:2012-06-05 09:32:27

标签: liferay

我需要覆盖/util-java/src/com/liferay/util/Normalizer.java

我在git找到了代码。

我关注this instructions并且能够执行 ant clean

我看了this

将我的.java文件放入my-ext-plugin / docroot / WEB-INF / ext-util-java / com / liferay / util / Normalizer.java

ant build

  BUILD FAILED
`/liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/build-common-ext.xml:122: The` following error occurred while executing this line:
/liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/build-common-ext.xml:173: The following error occurred while executing this line:
/liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/build-common.xml:80: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/normalizer-ext/docroot/WEB-INF/ext-service/src does not exist.

我知道正确的方法是创建一个Normalizer.java的子节点并覆盖那些私有方法,但我想知道在哪里放置这些文件。

我很惊讶你可以找到关于此的信息很少。所有Liferay大师都表现得非常简单。但事实并非如此。

更新

buld.username.properties

    app.server.dir = /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23
    ext.work.dir = /liferay/bundles
    app.server.zip = /liferay/portal/liferay-portal-tomcat-6.1.0-ce-ga1.zip

更新2

我创建了ext-service / src文件夹,并由BUILD SUCCESSFUL奖励。

ant compile ant deploy 正在运行

url-redirect-fix-ext 是我的ext插件的名称。

[root@localhost url-redirect-fix-ext]# ant deploy
Buildfile: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/url-redirect-fix-ext/build.xml

compile:

compile-with-global-class-loader:

compile-java:

compile-with-portal-class-loader:

compile-java:

compile-with-portal-class-loader:

compile-java:

compile-with-portal-class-loader:

compile-java:

compile-with-portal-class-loader:

compile-java:

war:

war-util:

war-util:

war-util:
   [delete] Deleting: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/dist/url-redirect-fix-ext-6.1.0.1.war
      [zip] Building zip: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/dist/url-redirect-fix-ext-6.1.0.1.war
   [delete] Deleting: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/url-redirect-fix-ext/docroot/WEB-INF/ext-url-redirect-fix-ext.xml

deploy:
     [copy] Copying 1 file to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/deploy

BUILD SUCCESSFUL

ant deploy 无法正常工作

[root@localhost url-redirect-fix-ext]# ant build
Buildfile: /liferay/plugins/liferay-plugins-sdk-6.1.0-ce-ga1/ext/url-redirect-fix-ext
/build.xml

BUILD FAILED
Target "build" does not exist in the project "url-redirect-fix-ext". 

我按照说明操作并部署了我的插件,然后重新启动了服务器。

这是我的Tomcat日志。我想插件已成功部署。

15:36:18,815 INFO  [AutoDeployDir:167] Processing url-redirect-fix-ext-6.1.0.1.war
15:36:18,818 INFO  [ExtAutoDeployListener:43] Copying extension environment plugin for /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/deploy/url-redirect-fix-ext-6.1.0.1.war
  Expanding: /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/deploy/url-redirect-fix-ext-6.1.0.1.war into /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829
  Copying 1 file to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829/WEB-INF
  Copying 1 file to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829/WEB-INF/classes
  Copying 1 file to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829/WEB-INF/classes
  Copying 1 file to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829/WEB-INF
  Warning: WEB-INF/ext-impl/classes/com/liferay/portal/deploy/dependencies/ext-url-redirect-fix-ext-util-bridges.jar modified in the future.
  Warning: WEB-INF/ext-impl/classes/com/liferay/portal/deploy/dependencies/ext-url-redirect-fix-ext-util-java.jar modified in the future.
  Warning: WEB-INF/ext-impl/classes/com/liferay/portal/deploy/dependencies/ext-url-redirect-fix-ext-util-taglib.jar modified in the future.
  Warning: WEB-INF/ext-impl/ext-impl.jar modified in the future.
  Warning: WEB-INF/ext-service/ext-service.jar modified in the future.
  Warning: WEB-INF/ext-util-bridges/ext-util-bridges.jar modified in the future.
  Warning: WEB-INF/ext-util-java/ext-util-java.jar modified in the future.
  Warning: WEB-INF/ext-util-taglib/ext-util-taglib.jar modified in the future.
  Warning: WEB-INF/ext-web/docroot/WEB-INF/liferay-portlet-ext.xml modified in the future.
  Warning: WEB-INF/ext-web/docroot/WEB-INF/portlet-ext.xml modified in the future.
  Warning: WEB-INF/ext-web/docroot/WEB-INF/struts-config-ext.xml modified in the future.
  Warning: WEB-INF/ext-web/docroot/WEB-INF/tiles-defs-ext.xml modified in the future.
  Warning: WEB-INF/liferay-plugin-package.properties modified in the future.
  Warning: WEB-INF/ext-impl/classes modified in the future.
  Warning: WEB-INF/ext-impl/classes/com/liferay modified in the future.
  Warning: WEB-INF/ext-impl/classes/com/liferay/portal modified in the future.
  Warning: WEB-INF/ext-impl/classes/com/liferay/portal/deploy modified in the future.
  Warning: WEB-INF/ext-impl/src modified in the future.
  Warning: WEB-INF/ext-lib modified in the future.
  Warning: WEB-INF/ext-lib/global modified in the future.
  Warning: WEB-INF/ext-lib/portal modified in the future.
  Warning: WEB-INF/ext-service/classes modified in the future.
  Warning: WEB-INF/ext-service/src modified in the future.
  Warning: WEB-INF/ext-util-bridges modified in the future.
  Warning: WEB-INF/ext-util-bridges/classes modified in the future.
  Warning: WEB-INF/ext-util-bridges/src modified in the future.
  Warning: WEB-INF/ext-util-java modified in the future.
  Warning: WEB-INF/ext-util-java/classes modified in the future.
  Warning: WEB-INF/ext-util-java/com modified in the future.
  Warning: WEB-INF/ext-util-java/com/liferay modified in the future.
  Warning: WEB-INF/ext-util-java/com/liferay/util modified in the future.
  Warning: WEB-INF/ext-util-java/src modified in the future.
  Warning: WEB-INF/ext-util-taglib modified in the future.
  Warning: WEB-INF/ext-util-taglib/classes modified in the future.
  Warning: WEB-INF/ext-util-taglib/src modified in the future.
  Warning: WEB-INF/ext-web modified in the future.
  Warning: WEB-INF/ext-web/docroot modified in the future.
  Copying 8 files to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/webapps/url-redirect-fix-ext
  Copying 2 files to /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/webapps/url-redirect-fix-ext
  Deleting directory /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/tomcat-7.0.23/temp/20120605153618829
15:36:19,062 INFO  [ExtAutoDeployListener:50] Extension environment for /liferay/bundles/liferay-portal-6.1.0-ce-ga1-new/deploy/url-redirect-fix-ext-6.1.0.1.war copied successfully. Deployment will start in a few seconds.
Jun 5, 2012 3:36:25 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Reloading context [/url-redirect-fix-ext]
15:36:25,612 INFO  [PluginPackageUtil:1099] Reading plugin package for url-redirect-fix-ext
15:36:25,618 INFO  [ExtHotDeployListener:226] Extension environment for url-redirect-fix-ext will not be undeployed
15:36:26,090 INFO  [PluginPackageUtil:1099] Reading plugin package for url-redirect-fix-ext
15:36:26,133 INFO  [ExtHotDeployListener:234] Registering extension environment for url-redirect-fix-ext
15:36:26,133 INFO  [ExtHotDeployListener:152] Extension environment for url-redirect-fix-ext has been applied.

不工作。我的门户网站仍有bug。

所以我在Git上发现的解决方案没有处理我的错误 或者新的Normalizer.java没有覆盖旧的Normalizer.class

我怎么能确定?

更新3

ant deploy

ERROR [ExtHotDeployListener:189] Extension environment for normalizer-ext cannot be applied because of detected conflicts:
url-redirect-fix-ext:
    ext-util-java/com/liferay/util/Normalizer.java
    ext-web/docroot/WEB-INF/liferay-portlet-ext.xml
    ext-web/docroot/WEB-INF/portlet-ext.xml
    ext-web/docroot/WEB-INF/struts-config-ext.xml
    ext-web/docroot/WEB-INF/tiles-defs-ext.xml
    ext-web/docroot/WEB-INF/web.xml

1 个答案:

答案 0 :(得分:1)

您从util-java更改代码,但将其放入util-bridges中?试着把它放在ext-util-java中。似乎没有弹簧自动装配涉及调用它,并且该类中只有静态方法,因此您可能只需要复制现有代码并根据需要进行修补,然后进行编译。

修改/增加:

从错误消息中,您似乎过于强调了http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/creating-an-ext-plugin中的这一段:

  

提示:创建Ext插件后,删除添加的所有文件   默认值不是扩展名所必需的。这个很重要   因为Liferay会跟踪每个Ext插件部署的文件   如果它们覆盖相同的话,它将不允许部署两个Ext插件   文件以避免碰撞。通过删除任何不必要的文件   从一个ext插件,它将更容易与其他Ext一起使用   插件。

您应该删除插件中不需要的文件 - 而不是目录。您声明的错误消息说

  

normalizer-ext / docroot / WEB-INF / ext-service / src不存在

编辑2:

在你的最新编辑中,你说“ant deploy”不起作用,但你实际执行的命令是“ant build” - 蚂蚁抱怨没有找到“build”目标。再试一次“ant deploy”

编辑3:

这是一个交互式调试会话,而不是Q& A: - )

您可以拥有任意数量的ext插件,但每个文件只能在一个ext插件中被覆盖(包含)。错误消息告诉您错误:构建过程抱怨的文件是从不同的ext-plugins修改的。这就是为什么引用(参见上面的答案,“提示”部分)说从你的插件中删除文件,除非你真的需要和覆盖它们。构建过程抱怨的文件正是create-script自动启动ext插件的文件。