我从包管理器 - http://localhost:4502/crx/packmgr/index.jsp
下载了来自正在运行的AEM实例的zip。解压缩后的zip文件包含jcr_root
和META-INF
。
我想在此zip文件之上构建一些功能。所以我想知道在eclipse中是否有办法处理这个文件?但是,此zip文件夹中没有pom.xml
个文件。所以我不能在Eclipse中导入它。我为Eclipse下载了AEM开发人员工具。
是否有可用的指南解释如何执行此操作? zip文件包含一些Java文件,我想对这些Java文件进行更改并重新打包,重新部署,以便我可以测试我的更改。
我尝试使用Adobe Brackets(扩展名为AEM),但它只适用于JS或JSP更改...不适用于JAVA文件。
更新
在@ Gabriel的评论之后,这是我对如何移动的理解 从我下载的到通过eclipse创建的新项目。
完成上述
后以下是我复制/粘贴所有内容后新eclipse项目的样子
来自已下载软件包的filter.xml的内容
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/etc/designs/delta"/>
<filter root="/apps/delta"/>
<filter root="/content/delta"/>
<filter root="/content/dam/delta"/>
<filter root="/content/usergenerated/content/delta"/>
<filter root="/apps/foundation/components/parsys"/>
</workspaceFilter>
基于上面,我在以下位置更改了两个filter.xml
/myproj.ui.apps/src/main/content/META-INF/vault/filter.xml
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/apps/myproject">
<exclude pattern="/apps/myproject/install" />
</filter>
<filter root="/apps/foundation/components/parsys" />
<filter root="/etc/designs/delta"/>
</workspaceFilter>
/myproj.ui.content/src/main/content/META-INF/vault/filter.xml
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/content/myproject"/>
<filter root="/content/dam/myproject"/>
<filter root="/content/usergenerated/content/delta"/>
</workspaceFilter>
干净/发布似乎没有任何效果,因为我在干净/发布后没有在CRX或localhost:4502/siteadmin
中看到任何内容。所以我尝试手动安装。
为此我在myproj上做了Run as -> Maven Install
(构建以下zip文件)
~/Documents/workspace/myproj $ tree | grep "zip"
│ ├── myproj.ui.apps-0.0.1-SNAPSHOT.zip
├── myproj.ui.content-0.0.1-SNAPSHOT.zip
当我上传&amp;将这两个文件安装到CRX我看到以下内容:
但是,这似乎也没有任何效果,因为我在localhost:4502/siteadmin
中看不到任何内容,当我访问localhost:4502/content/myproj
时出现错误
``
BTW这是我在localhost:4502/siteadmin
更新2
在重复完成所有内容后,我能够创建eclipse项目,并且在清理/发布方面取得了成功。但是,当我清理/发布时,对JAVA文件的更改没有反映出来。
@Gabriel提到了
PROJECT.core for Java bundle(这些将很快变得有趣 因为你想添加Java代码)
我已经有PROJECT.ui.apps
中的java文件,如下图所示
如果我对此JAVA文件进行了更改并清理/发布,则我的更改不会反映在AEM中。是否还需要做一些其他事情才能更改和发布JAVA代码?或者如何更改JAVA文件并在AEM上测试?
答案 0 :(得分:9)
您可以使用“新建项目”功能为您创建正确的结构:
您现在已经为您创建了以下项目,这将使关注点健康分离:
PROJECT.ui.apps
代表/apps
和/etc
内容PROJECT.ui.content
用于/content
作者PROJECT.core
用于Java捆绑包(只要您想添加Java代码,这些就会变得很有趣)PROJECT.it.launcher
和PROJECT.it.tests
用于集成测试(只要不运行任何集成测试,就可以忽略这些)首先,将PROJECT.ui.apps
项目的内容替换为程序包的apps
和etc
文件夹:
PROJECT.ui.apps
&gt; src
&gt; main
&gt; content
&gt; jcr_root
&gt; apps
apps
文件夹,然后选择显示&gt; 系统调查员 apps
和etc
文件夹,并将其放在内容包的apps
和etc
个文件夹中PROJECT.ui.apps
项目,然后选择刷新 然后为PROJECT.ui.content
执行相同操作,并将其替换为content
文件夹中的一个包:
PROJECT.ui.content
&gt; src
&gt; main
&gt; content
&gt; jcr_root
&gt; content
content
文件夹,然后选择显示&gt; 系统调查员 content
文件夹,并将其放在您的内容包的content
文件夹中PROJECT.ui.content
项目,然后选择刷新 现在,您必须更新这两个项目的filter.xml
个文件,以与内容包的内容相对应。
为此,请在单独的文本/代码编辑器中打开内容包的META-INF/vault/filter.xml
文件。
这是filter.xml
文件的外观示例:
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/apps/foo"/>
<filter root="/apps/foundation/components/bar"/>
<filter root="/etc/designs/foo"/>
<filter root="/content/foo"/>
<filter root="/content/dam/foo"/>
<filter root="/content/usergenerated/content/foo"/>
</workspaceFilter>
对于分为两个项目的软件包内容,您还必须将这些过滤规则拆分为两个,并相应地更新这两个项目的filter.xml
个文件。
PROJECT.ui.apps/src/main/content/META-INF/filter.xml
<workspaceFilter>
元素的内容替换为以/apps
和/etc
开头的包裹规则PROJECT.ui.content/src/main/content/META-INF/filter.xml
/content
根据上面的示例,这就是filter.xml
的{{1}}看起来的样子:
PROJECT.ui.apps
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/apps/foo"/>
<filter root="/apps/foundation/components/bar"/>
<filter root="/etc/designs/foo"/>
</workspaceFilter>
:
PROJECT.ui.content
确保保存所有更改。您现在应该已经完成,并且可以将新内容同步到您的AEM实例。
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/content/foo"/>
<filter root="/content/dam/foo"/>
<filter root="/content/usergenerated/content/foo"/>
</workspaceFilter>
,如果没有启动完成后,您应该在您的实例上运行您的包,并且在保存时,任何更改都会自动同步到实例。
如果您希望从项目中重新构建软件包:
[Started]
或PROJECT.ui.apps
,然后选择运行方式&gt; Maven安装 PROJECT.ui.content
文件夹,该文件夹是在您的包内创建的(例如target
)。答案 1 :(得分:0)
答案 2 :(得分:0)
如果您使用aem-project-archetype:10来生成项目,那么将会有一些差异/更正:
正确生成过滤器文件(但在不同的路径中):
所以,您不需要修复这些文件。
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/apps/product-name">
<exclude pattern="/apps/product-name/install" />
</filter>
<filter root="/apps/sling" />
<filter root="/etc/designs/product-name"/>
</workspaceFilter>
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/content/product-name"/>
<filter root="/content/dam/product-name"/>
</workspaceFilter>