java - 如何用IDE组织java项目?

标签 java intellij-idea project-organization

我要开发 java 系统,它由三个应用程序组成。此应用程序使用相同的包。例如,如何在 IntelliJ IDEA 中组织这个项目?它必须在项目中,所有源都组织在一个包层次结构中,或者在库中使用的不同项目中。你能告诉我专业的解决方案吗?

最佳答案

专业的解决方案是不依赖 IDE 来构建您的软件。您想要使用构建工具来构建软件。有许多构建工具可供选择,例如

  1. 制作
  2. Ant
  3. 专家
  4. 耙子
  5. Gradle
  6. build 者

等等

您选择的工具取决于您如何看待构建软件。

例如 Make、ANT 等工具采用“完全按我说的做”的方法来构建软件。如果您喜欢必须准确说明您想要做什么以及如何完成,这可能会很好。

Maven 等工具采用“约定优于配置”的方法。他们说如果你遵循约定,你就不必反复告诉构建工具如何做标准的事情,所以例如使用 Maven,如果你把你的 Java 源代码放在 src/main/java 目录,然后 Maven 会自动为您编译它,如果您将测试源代码放在 src/test/java 中,Maven 会为您编译并运行所有测试。

Maven 并不适合所有人......有些人似乎想花更多的时间告诉构建工具确切要做什么,而不是花更少的时间编写他们的软件......那很好......这不是我(我是在 Maven PMC 上......猜猜我最喜欢的构建工具是什么并不奇怪)......但是这些人确实喜欢 Maven 提供的一些“约定优于配置”的东西......他们只是想要一种更灵活的覆盖方式当他们需要打破常规时……有这种心态的人会使用 Gradle 和 Buildr 等工具。

好的 IDE 将获取构建文件并从该构建工具推断项目结构。 IntelliJ、Eclipse 和 NetBeans 都理解 Maven 的 pom.xml 构建文件。它使您的 IDE 设置成为空操作。由于我个人使用 Maven 和 IntelliJ,所以我没有调查其他构建工具在 IDE 中的公平性。

选择一个构建工具,看看它如何为您工作。我假设您正在使用版本控制系统...如果您要更改构建工具,那应该没什么大不了的。

如果您选择使用 Maven,您将从一个 4 或 5 个模块的项目开始(一个父模块和三个子模块,可能有一个共享的公共(public)模块)

代码结构如下

+- pom.xml (the root parent pom)
+- common (the common module directory)
|    +- pom.xml (the common module pom)
|    \- src
|         +- main
|         |    +- java
|         |    |    \- com... (your package dirs for common classes)
|         |    \- resources
|         |         \- com... (your package dirs for common classpath resources)
|         \- test
|              +- java
|              |    \- com... (your package dirs for tests of common classes)
|              \- resources
|                   \- com... (your package dirs for common test classpath resources)
+- app1 (the app1 module directory)
|    +- pom.xml (the app1 module pom)
|    \- src
|         +- main
|         |    +- java
|         |    |    \- com...
|         |    \- resources
|         |         \- com...
|         \- test
|              +- java
|              |    \- com...
|              \- resources
|                   \- com...
+- app2 (the app2 module directory)
|    +- pom.xml (the app2 module pom)
|    \- src
|         +- main
|         |    +- java
|         |    |    \- com...
|         |    \- resources
|         |         \- com...
|         \- test
|              +- java
|              |    \- com...
|              \- resources
|                   \- com...
\- app3 (the app3 module directory)
     +- pom.xml (the app3 module pom)
     \- src
          +- main
          |    +- java
          |    |    \- com...
          |    \- resources
          |         \- com...
          \- test
               +- java
               |    \- com...
               \- resources
                    \- com...

你的根 pom.xml 看起来像

<project>    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mydomain.something</groupId>
    <artifactId>something-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>common</module>
        <module>app1</module>
        <module>app2</module>
        <module>app3</module>
    </modules>
</project>

common/pom.xml 看起来像

<project>    
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.mydomain.something</groupId>
        <artifactId>something-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>something-common</artifactId>
    <dependencies>
        <!-- insert the 3rd party dependencies you want -->
    </dependencies>
</project>

然后每个应用 poms 看起来像这样

<project>    
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.mydomain.something</groupId>
        <artifactId>something-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>something-app1</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.mydomain.something</groupId>
            <artifactId>something-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- insert any 3rd party dependencies you want for app1 only -->
    </dependencies>
</project>

希望对你有帮助

关于java - 如何用IDE组织java项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14336576/

相关文章:

java - Jackson 反序列化 convertValue 应该在空值上失败

java - Intellij IDEA - 如果有多个方法参数,则强制每个方法参数在其自己的行上

c# - 在 C# 代码中包含数据的格式

delphi - 开源 Delphi 包可使用哪些项目选项?

java - 从数组列表转换/复制到对象数组

java - Maven 不支持 Maven 依赖插件

java - 每天在特定时间运行代码

intellij-idea - 如何在 IntelliJ IDEA 中将包导出为 zip 文件

java - 在 Gradle 中使用 IntelliJ Javac2 编译器而不是标准编译器

python - 数据科学家如何组织代码结构以提供最小且可重用的数据管道示例?