我要开发java系统,它由三个应用程序组成。这些应用程序使用相同的包。如何在IntelliJ IDEA中组织这个项目?必须在项目中所有资源都组织在一个包层次结构中,还是在库中使用不同的项目。你能告诉我专业的解决方案吗?
如果真的是专业,假设您还需要使用 Maven 构建项目,并按照 Maven 概念布局文件夹。即使您永远不会从命令行构建,大多数最新的优秀IDE也应该支持Maven项目。将来很可能需要使用 Maven,迁移的工作量会更少。
更新:这是在撰写本文时。现在我建议使用渐变,它比Maven更受欢迎。
我使用以下方法:root-project
由一些子项目组成。其中一些依赖于其他(这是在项目属性中配置的)来使用项目依赖的代码库。
root-project
+---- project1
+---- project2
+---- project3
+---- shared-code-project
专业的解决方案是不要依赖IDE来构建你的软件。您希望使用构建工具来构建软件。有许多构建工具可供选择,例如
等等。
您选择的工具取决于您如何看待构建软件。
例如,Make、ANT等工具采用“完全按照我说的去做”的方法来构建软件。如果你喜欢清楚地说出你想做什么和你想怎么做,这是很好的。
Maven等工具采用“约定胜于配置”的方法。他们说,如果你遵循这些约定,你就不必反复告诉构建工具如何做标准的事情,因此例如,对于Maven,如果你把你的Java源代码放在src/main/Java
目录中,那么Maven会自动为你编译它,如果你将你的测试源代码放进src/test/Java
Maven就会为你编译并运行所有的测试。
Maven并不适合所有人...有些人似乎想花更多的时间告诉构建工具到底要做什么,而花更少的时间编写他们的软件...那很好...这不是我(我在PMC号上...猜猜我最喜欢的构建工具是什么也不奇怪)...但是这些人确实喜欢Maven给出的一些“约定优于配置”的东西...他们只是想要一种更灵活的方式,当他们需要脱离约定时,可以进行覆盖...像Gradle和Buildr这样的工具是有这种想法的人使用的。
好的IDE将获取构建文件,并从该构建工具推断项目结构。IntelliJ、Eclipse和NetBeans都了解Maven的pom。xml
构建文件。它使您的IDE设置成为一个禁止操作的问题。我个人使用Maven和IntelliJ时,还没有研究过其他构建工具在IDE中的公平性。
选择一个构建工具,看看它如何为你工作。我假设您正在使用版本控制系统...如果你正在改变构建工具,应该没什么大不了的。
如果您选择使用Maven,您将从一个4或5个模块的项目开始(一个父模块和三个子模块,可能有一个共享的公共模块)
代码的结构将如下所示
+- 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>
通用/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>
然后每个应用程序POM看起来会像这样
<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>
希望这有所帮助
我对Cucumber是新手,我正在使用Cucumber java。cucumber功能文件看起来很棒。然而,步骤定义的重用实际上阻碍了组织步骤定义代码。对我来说,组织步骤定义最直观的方法就是按照功能文件的组织方式,即一个类对应一个功能。但是,如果在两个要素文件中有两个相同的步骤,则这种方法是错误的,因为您将错过其中一个类中的一个步骤,这会破坏整个结构的一致性。然而,我现在无法说服自己使用其他方法。
我正在GitHub上创建一个模块化的构建(使用module-info.java),但是在我想要模块化的模块中添加一个module-info.java时,无法执行任何测试... 我怎样才能做到这一点呢? 我正在使用以下版本: junit.jupiter版本5.3.0(第一次使用版本5.2.0也不成功) maven-compiler-plugin版本3.8.0(第一次使用版本3.7.0也不成功) ma
问题内容: 我是从C#/ Visual Studio的背景来学习Java和Eclipse的。在后者中,我通常会组织这样的解决方案: \ MyProjects \ MyApp \ MyAppsUtilities \ LowerLevelStuff MyApp将包含一个用于构建.exe的项目,MyAppsUtilities将创建一个由.exe调用的程序集DLL,而LowerLevelStuff可能会构
Flask 把你的应用程序的组织交由你来决定。这是我喜欢把 Flask 推荐给初学者的原因之一,但是它确实意味着你必须花一些心思在组织你的代码上。你可以把你的整个应用程序放在一个文件中,或者让它们分布在多个包里。这里有一些你可以遵循的组织模式,它会让开发和部署更加容易。 定义 让我们定义一些术语,我们会在本章的后面碰到它们。 仓库/版本库 - 这是你的应用程序所在的基础文件夹。这个术语习惯上是指版
问题内容: 我一直在努力建立我的cordova插件项目。主要由于以下事实: 插件需要位于远离主项目的单独文件夹中 例如,当我使用它来构建项目时,cordova从我的插件文件夹中复制java文件并将其放入文件夹中。 因此,我不应该在Android项目中手动修改插件的.java文件,而必须在插件文件夹中编写代码。 但是我无法将插件文件夹导入到IDE项目中,因此我没有代码完成功能。 没有IDE支持,基本
我正在尝试设置自己的ca服务器和客户端。在用admin初始化ca服务器之后,我用ca client enroll cli命令注册了它。然后我想在系统中添加另一个组织。我更改了结构ca服务器配置。yml文件附属部分然后重新启动服务器,然后尝试使用ca客户端向该组织注册新用户。但它失败了,出现了“未找到关联”错误。所以我想知道这个问题。在使用admin user初始化服务器之后,其他用户和组织是否应该