sách gpt4 ai đã đi

Gradle tạo ra dự án Eclipse dự án EAR

In lại 作者:行者123 更新时间:2023-12-02 09:19:06 31 4
mua khóa gpt4 Nike

我正在将旧项目从 kiến 迁移到 gradle(以使用其依赖项管理和构建功能),并且在生成 时遇到问题>eclipse 项目。今天的大问题是因为该项目有一些子项目被拆分成 war 和 jar 包部署到单个 ear 中。这是 kiến 今天制作的。为了使用 gradle,我将 eclipse 项目拆分为单独的 jar 和 war 项目。所以我有以下结构:

ProjectRoot
-lib
-Project1.jar
-Project1.war
-Project2.jar
-Project3.war

Đây là của tôi gradle tài liệu:

apply plugin: 'ear'
def jboss_home = '/home/augusto/Development/servers/jboss6X'
def deploy_name = 'default'

tất cả các dự án {
kho lưu trữ {
mavenCentral()
}
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'
}

phụ thuộc {
deploy project(path: 'Project1.jar', configuration: 'archives')
deploy project(path: 'Project1.war', configuration: 'archives')
deploy project(path: 'Project2.jar', configuration: 'archives')
deploy project(path: 'Project2.war', configuration: 'archives')
earlib fileTree(dir: 'lib', include: '*.jar')
}

ear {
libDirName = "lib"
deploymentDescriptor {
applicationName = "MyApp"
initializeInOrder = true
displayName = "MyApp"
module("Project1.jar", "java")
module("Project2.jar", "java")
webModule("Project1.war", "/Project1")
webModule("Project2.war", "/Project2")
}
}

project('MyJarLib') {
apply plugin: 'java'
phụ thuộc {
compile files('../lib/ajar.jar')
compile fileTree(dir: jboss_home + '/common/lib', include: '*.jar')
compile fileTree(dir: jboss_home + '/client', include: '*.jar')
compile fileTree(dir: jboss_home + '/lib', include: '*.jar')
compile fileTree(dir: jboss_home + '/server/' + deploy_name + '/lib', include: '*.jar')
}
}

project('Project1.jar') {
apply plugin: 'java'
phụ thuộc {
compile 'org.apache.poi:poi:3.2-FINAL', 'jdom:jdom:1.1'
compile project(':MyJarLib.jar')
}
}

project('Project1.war') {
apply plugin: 'war'
}

project('Project2.jar') {
apply plugin: 'java'
phụ thuộc {
compile 'net.sf.jasperreports:jasperreports:3.7.0', 'jdom:jdom:1.1'
compile project(':MyJarLib.jar')
}
}

project('Project2.war') {
apply plugin: 'war'
}

我已将 ear 插件放入子项目中,以使用 eclipse 将其部署到服务器。如果我只让 jar,我无法使用 eclipse 将其部署到服务器(我想这样做是为了使用 jboss 6 的热部署功能)。由于 kiến 构建,我们的团队在维护此应用程序时遇到了很大的生产力问题。测试一个功能需要将近 15 分钟,因为他们不能使用热部署......eclipse 的问题:它在部署中不会生成单个 ear。它单独部署包,服务器部署失败。gradle 构建的问题:它正在生成正确的结构,但它在每个 jar 项目内创建 application.xml 文件(因为 Ear 插件)。我仅使用根application.xml。你能帮我解决这两个问题吗?谢谢。

biên tập

我已经成功地使用评论中的提示让 Eclipse 正确部署了我的项目。在所有 java 项目中我都放置了此配置:

apply plugin: 'ear'
ear.onlyIf { false }
ear {
//appDirName 'src/main/java'
libDirName '../lib'
}

sourceSets {
chủ yếu {
java {
srcDir 'src/main/application'
}
}
}
eclipse.wtp.facet {
facet name: 'jst.ejb', version: '3.1'
facet name: 'java', version: '1.6'
}
eclipse.classpath.file{
withXml {
def nodes = it.asNode().children().findAll{it.@kind == 'lib'}
nodes.each {
if(it.attributes[0] == null)
it.appendNode('attributes').appendNode('attribute', [name:'org.eclipse.jst.component.dependency', value: '../lib'])
khác
it.attributes[0].attribute[0].@value = '../lib'
}
}
}

我已经安装了ear插件,因此gradle生成了准备在eclipse中部署的项目。 ear.onlyIf { false } 使 gradle 不会在 Ear 结构中生成工件。之后,我更改了 eclipse 首选项以将项目的方面设置为 EJB,并更改了类路径条目以将依赖项部署在ear lib 目录中,而不是ear 的根目录中。我现在的问题是从 gradle 构建。当我调用 gradle Ear 时,由于 Web 容器库不在类路径中,它会生成大量依赖项错误...所以我有很多 classnotfound 异常。如果我将所有类作为我的项目的依赖项,它将扰乱 Eclipse 类路径(和部署)。问题是:是否有一种方法可以为 gradle 中的 java 项目提供提供的依赖项,是否有一种简单的方法可以从 jboss 提供所有这些 jar,而不是每个 jar?

1 Câu trả lời

我已经成功完成了所有工作。使用我的问题编辑部分和此bài báo的一些要点中的解决方法。这是我必须做的:

configurations {
provided
}

sourceSets {
chủ yếu {
compileClasspath += configurations.provided
compileClasspath += configurations.compile
compileClasspath += configurations.runtime
java {
srcDir 'src/main/application'
}
}
}

这使得我可以在所有项目的依赖项中使用提供的内容,并且不会与 Eclipse 项目混淆。

关于java - Gradle 生成 Eclipse 项目 EAR 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938205/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com