我要开发 java 系统,它由三个应用程序组成。此应用程序使用相同的包。例如,如何在 IntelliJ IDEA 中组织这个项目?它必须在项目中,所有源都组织在一个包层次结构中,或者在库中使用的不同项目中。你能告诉我专业的解决方案吗?
最佳答案
专业的解决方案是不依赖 IDE 来构建您的软件。您想要使用构建工具来构建软件。有许多构建工具可供选择,例如
- 制作
- Ant
- 专家
- 耙子
- Gradle
- 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/