【问题标题】:Maven/Gradle working overlay example with eclipse使用 Eclipse 的 Maven/Gradle 工作覆盖示例
【发布时间】:2013-02-15 10:16:45
【问题描述】:

我有一个 EAR 项目,它应该包含一个或多个瘦 WAR。我已经尝试了所有方法来让该项目与 eclipse 一起工作,但是当我从命令行运行工具(maven 和 gradle)时,我无法让 eclipse 做同样的事情。

没有我可以用来让我的项目与 eclipse 一起工作的工作示例吗?请帮助我,我已经问自己是否有人真的像我希望的那样使用这些工具来完成此类项目。

【问题讨论】:

  • 您能否通过提供您尚未尝试的方法来澄清哪些方法不起作用? “包含一个更瘦的战争”是什么意思?我认为 WAR 是构建工件,并且(仅)在使用您首选的构建工具后创建。当 Eclipse 启动一个 EAR 项目时,它是否首先构建 EAR?你是怎么做到的?
  • 我要的是一个例子,而不是我遇到的问题的解决方案。我正在寻找一个包含一个或多个 WAR 项目的示例 EAR 项目。 WAR 项目的库应该移动到 EAR/libs => skinny WAR。我现在想要一个 EAR 多模块项目的工作示例,该项目带有瘦 WAR,用于 Maven 或 gradle 项目,也可以在 eclipse 中运行。

标签: java eclipse maven build gradle


【解决方案1】:

在我上次的项目经验中,我在使用 Eclipse 支持 maven 时遇到了问题。由于 Eclipse m2 插件的问题。

所以对我来说最好的解决方案是通过一些 shell 脚本从命令行构建一个耳朵。为了在 IDE 中打开项目,我使用了maven eclipse plugin,因此我通过 maven 生成了 eclipse 工作区。

使用Eclipse External Tools,您可以运行shell 脚本以非常方便地从命令行构建/或运行您的EE 应用程序。

同样适用于 gradle,但看起来 Eclipse Gradle 插件更稳定,现在我在我的 Gradle 项目中使用插件。

如果它对你有用,你可以查看github test project 来说明如何制作 maven 多模块战争项目。您还可以找到如何为该项目生成 Eclipse 工作区的简短说明。生成工作区后,您可以将现有项目作为现有项目导入您的工作区。

【讨论】:

  • 感谢您的提示,我已经尝试了很多,并且明确要求提供示例。如果您向我提供一个 maven/gradle 示例项目,该项目展示了如何实现瘦战,以便 eclipse 也可以处理它,您的答案将被接受:)
  • 我只有战争示例来展示如何创建 maven 项目,并且我添加了如何将项目导出到 eclipse 中的简短说明。
  • 当 EAR 项目应该包含 WAR 项目的所有库时,问题就来了,如果你能在 eclipse 中让它工作会很酷;)
  • 在 eclipse:eclipse 工作区生成中没有区别,您使用 war 或 ear 项目。你能从命令行构建 EAR 吗?
  • 我刚刚找到了 maven 构建的解决方案。除了使瘦 WAR 在 eclipse 中工作之外,不仅应该使用packagingExcludes,还应该使用dependentWarExcludes。不幸的是,我仍然无法让 gradle 项目与 eclipse 一起工作。也许我应该坚持使用 Maven。如果您可以向我展示以下作为在 Eclipse 中工作的 gradle 项目,我可以为您提供接受:github.com/beikov/maven-multi-module-ear-skinny-war
【解决方案2】:

这是一个包含war的示例Ear项目(目录结构参考下面的img)

MainDir 包含 2 个文件和 1 个名为 war 的目录

文件settings.gradle包含

include 'war'

文件build.gradle包含

apply plugin: 'ear'

repositories {
    mavenCentral()
}

dependencies {
    deploy project(':war')
    //earlib group: YOUR_DEPENDENCIES
}

build.gradle for war 目录包含

apply plugin: 'war'
apply plugin: 'jetty' // you can call gradle jRW

repositories {
    mavenCentral()
}

dependencies {
    //compile group: YOUR_DEPENDENCIES
}

httpPort = 8080 //jetty start port
stopPort = 8081 //jetty stop port

文件 HelloWorld.java 包含

public class HelloWorld {
    public String getHello() {
        return "Hello world!";
    }
}

文件index.jsp包含

<jsp:useBean id="helloWorld" class="your_package.HelloWorld"/>
<html>
<p>${helloWorld.hello}</p>
</html>

现在打开 cmd->MainDir(或者你可以在 eclipse-marketplace 中搜索 gradle 并直接从 eclipse 中执行此步骤)并输入

gradle jRW//short for jettyRunWar

现在打开

localhost:8080/war/

【讨论】:

  • 感谢您的评论,但问题是关于耳朵内的瘦小战争以及这样一个使用 eclipse 的 gradle 项目。在 cmets 中是一个指向执行我想要的 Maven 项目的链接,它甚至可以与 Eclipse 一起使用。我只想拥有它的 gradle 版本:(
  • 如果修改示例并在war->build.gradle中添加以下war { classpath =[]}然后运行gradle ear怎么样?
  • eclipse可以处理吗?我已经尝试了不同的方法,不确定这个,但我认为这不会奏效。我会尝试并告诉你。据我所知,由于 gradle eclipse 插件无法处理依赖范围,我也不认为它会使用此设置生成有效的项目文件。
猜你喜欢
  • 2014-11-21
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2015-08-03
  • 2015-04-10
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
相关资源
最近更新 更多