我正在使用 gradle 来设置多项目构建。我有以下项目的文件夹布局:
---RootProject
---- build.gradle
---- settings.gradle
------ JarProject (Utility)
--------- build.gradle
------ JpaProject (Dependency on JarProject)
--------- build.gradle
------ EjbProject (Dependency on JarProject, JpaProject)
--------- build.gradle
------ WebProject (Dependency on EjbProject)
--------- build.gradle
工具与技术
- 梯度:1.6
- 爪哇:1.7
- 日食:朱诺
- 服务器:Glassfish 3.1.2.2
我能够为上述文件夹布局定义多项目构建。Gradle 能够为我能够将所有项目导入到 Eclipse 的每个项目生成 Eclipse 元数据。Gradle 能够正确生成“.ear”工件。但是,我无法从 Eclipse 部署 Ear 项目。在部署期间,eclipse 给出了 NullPointerException。
为了告诉 Gradle 为 EarProject、EjbProject 和 JpaProject 生成适当的 facet,我添加了以下代码:* EarProject/build.gradle
apply plugin: 'ear'
apply plugin: 'eclipse-wtp'
eclipse {
wtp {
facet {
facet name:'jst.ear', version:'6.0'
}
}
}
* EjbProject/build.gradle
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
eclipse {
wtp {
facet {
facet name:'jst.ejb', version:'3.1'
}
}
}
JpaProject/build.gradle
应用插件:'war' 应用插件:'eclipse-wtp' eclipse { wtp { facet { facet name:'java', version:'1.6' facet name:'jpt.jpa', version:'2.0' } } }
WebProject/build.gradle
apply plugin: 'war' apply plugin: 'eclipse-wtp' eclipse { wtp { facet { facet name:'java', version:'1.6' facet name:'jst.web', version:'3.0' facet name:' wst.jsdt.web',版本:'1.0' } } }
请注意,即使 EjbProject 和 JpaProject 不是 Web 项目,也会应用插件“war”。因为这个 gradle 认为 EjbProject 和 JpaProject 是 web 项目并相应地创建 eclipse 元数据。
对于 EjbProject/JpaProject,文件“org.eclipse.wst.common.component”有以下内容
<property name="context-root" value="prj-context"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
因此,当我将 EjbProject/JpaProject 导出到 ejb-jar 或 jar 文件时,eclipse 不会创建正确的 jar 文件。
另一个问题是我无法使用 eclipse“File->Export->Ear File”将 EarProject 导出到“.ear”文件。我得到一个例外
当我尝试从 Eclipse 中部署 EarProject 时,它会给出 NullPointerException。
我的想法是将 EarProject 从 eclipse 中部署到 eclipse 中定义的 Glassfish 服务器并调试应用程序。
请给我指导。
钛酸