Reputation: 889
What is the standard project directory structure of a standalone Java SE (Command Line based) application?
src
folder will contain all my .java
files in properly organized packages. Other than that I have bin
folder which will contain my .class
files.
I've Properties files and XML configuration files in my project. In which directory should I place them? Should I create a package named com.myproject.config
and place all the .xml
config files in that?
I want the dependent jars to be packaged along with my final package. So should I create a folder (say by the name lib
) to hold all these .jar
files?
Upvotes: 26
Views: 76051
Reputation: 4347
A commonly used structure is the following:
Upvotes: 6
Reputation: 944
src/com.enterprise_name.project_name. Main.java (the main class)
src/com.enterprise_name.project_name.model.(here all model classes)
src/com.enterprise_name.project_name.view.(here all view classes, JFrame, Jdialog,etc)
src/com.enterprise_name.project_name.view.resources.(here all the files and images used in the views *note)
src/com.enterprise_name.project_name.controller.(here all controller classes)
lib/(here all the external libraries - dont forget add to build path)
*note if you need some resource file (xml, config file, etc) create a package .resources. in the specific place where do you need (model, controller, view)
Upvotes: 8
Reputation: 10218
As far I as know, there is no such thing as a standard project structure for Java per se. However, various tools and IDEs (such as Eclipse) do have a standard structure.
Maven, a build tool for Java, on the other hand has a very clearly defined (default) project structure. There, all Java source files are placed in the src/main/java
folder and all resource files (like your config files) are placed in src/main/resources
.
Here's a very quick introduction to Maven, if you don't know it yet: Maven in 5 Minutes
Regarding your question about packaging with dependencies, here is a snipped from one of my Maven POM files that uses the Assembly Plugin to create a JAR file with all dependencies included:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>...</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Upvotes: 5
Reputation: 12367
I would recommend to stick with default Maven layout ( and also use maven as build tool )
Productive classes / resources:
src/main/java
src/main/resources
Test data and classes:
src/test/java
src/test/resources
Maven can also take care to package your application properly with all the necessary jars ( look for maven assembly plugin )
Upvotes: 30