【问题标题】:Porting a tomcat web project from eclipse ganymede to intellij 8.1将tomcat web项目从eclipse ganymede移植到intellij 8.1
【发布时间】:2010-10-27 07:09:07
【问题描述】:

我有一个使用 Eclipse IDE 开发的标准(我认为)Web 项目。我希望将其移植到 Intellij IDEA 8.1 - 我认为,除其他外,它具有更好的 taglib 支持。

我的项目结构如下:

Project Folder
./src  [java source files etc.]
./conf [configuration files - log4j, spring beans...]
./buid [ant files]
./WebContent
./WebContent/images [image files]
./WebContent/META-INF
./WebContent/META-INF/context.xml
./WebContent/pages [.jsp+.html files]
./WebContent/scripts [.js files]
./WebContent/skins [.css files]
./WebContent/WEB-INF
./WebContent/WEB-INF/classes [.class files]
./WebContent/WEB-INF/lib [.jar files]
./WebContent/WEB-INF/tags [.tag files]
./WebContent/WEB-INF/web.xml

我似乎无法使用我的本地 tomcat 服务器(版本:apache-tomcat-6.0.18)配置此项目。

我认为一个好的答案将是一个标准的、逐步的、关于如何移植(以及如何在 intellij idea 中正确定义 tomcat Web 应用程序)的食谱答案。

谢谢大家!

【问题讨论】:

    标签: eclipse tomcat maven-2 intellij-idea


    【解决方案1】:
    1. 默认情况下,log4j 会从应用程序的类路径中查找它的配置文件(log4j.xml 或 log4j.properties)。所以这意味着你应该把它放在WEB-INF\classes,或者你可以用环境变量log4j.configuration指定一个不同的位置。请参阅log4j manual
    2. 当应用程序部署到 servlet 容器时,您使用的 IDE 应该不会影响应用程序的结构。听起来您可能依赖 Eclipse 以特定方式打包文件——这可能是一种不好的做法。您使用的是实际的构建脚本吗?

    【讨论】:

    • 尽管有一个 build.xml 文件用于创建一个 .war 文件(用于生产目的),我还是依靠 eclipse 将一个爆炸的 Web 应用程序部署到本地 tomcat 服务器...
    • 我并不认为这是一种不好的做法——您依赖于 IDE 的部署方式;最好让打包成为构建脚本的严格部分。
    【解决方案2】:

    我认为第一步是创建一个独立的构建文件,它会产生一个 WAR。在尝试将项目导入 InteliJ 之前执行此操作。

    我会使用MavenCreating a maven POM filecreate a WAR 几乎是微不足道的,您可以轻松覆盖 src、conf 和 Web 内容的默认位置以匹配您现有的 src 目录。然后通过将新的 Maven 创建的 WAR 部署到 Tomcat 来测试构建。我认为第一项任务不会超过半天(最多一整天)。

    IntelliJ 有一个built in utility to import Maven projects。然后你应该下车并运行......

    无论您最终选择哪种 IDE,从长远来看,您的项目都会因 Maven 迁移而变得更好。

    您最初的 Maven POM 文件将看起来像 类似...

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.yourcompany.yourapp</groupId>
      <artifactId>yourapp</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>Your project name here</name>
      <url>http://maven.apache.org</url>
      <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
          </dependency>
          <dependency>
            *** other dependencies here ***
          </dependency>
      </dependencies>
      <build>
         <sourceDirectory>src</sourceDirectory>
         <resources>
            <resource>
               <directory>conf</directory>
               <includes>
                  <include>**/*.xml</include>
               </includes>
            </resource>
         </resources>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.0</version>
               <configuration>
                  <webResources>
                     <resource>
                        <!-- this is relative to the pom.xml directory -->
                        <directory>WebContent</directory>
                     </resource>
                  </webResources>
               </configuration>
            </plugin>
         </plugins>
      </build>
    </project>
    

    *** 这只是一个示例 POM...它只是为了帮助您入门,可能无法“按原样”工作。

    【讨论】:

    • 我自己刚刚被介绍给 maven,我认为它非常简洁。但是没有标准的方法吗?是否没有对 IDE 不可变的固定目录结构?
    • 我不知道。每个团队和每个 IDE 似乎做的事情都有点不同。我试图引导我的团队遵循 Maven 的约定,这样我们就不会超越任何东西,但这实际上更符合个人喜好。
    【解决方案3】:

    首先在 IntelliJ 中为 tomcat 创建一个空的 Web 应用程序 - 并确保它正确部署 这将产生一个目录结构,然后您应该能够将源文件/网络资产复制到其中。

    您可能需要以不同方式处理的是 lib 文件 - 不要将它们直接存储在 WEB-INF 目录中,因为将它们保存在单独的“库”区域中,并允许 IDE 包含它们在构建时加入 WAR 通常是一种更好的方法,因为它促进了跨项目的重用。

    目标的关键是不要尝试将您的项目设置为完全镜像 tomcat 应用程序,因为构建过程将为您整合各个部分。这一切都分为 3 个部分...

    1. 静态资产 - 图像、配置文件和 jsp 文件(好吧,我知道 JSP 文件有点动态)
    2. Java 类 - 您自己编写的源代码(IDE 将编译这些并将它们放置在适当的位置)
    3. Java 库 - 用于编译的第三方代码(IDE 再次将这些代码放置在适当的位置)

    项目文件中有一些配置,您需要进行调整以满足您的需求,但通常很简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      相关资源
      最近更新 更多