For this addition, I had the following stipulations:
- Leave existing structure alone. Source/resource/etc directories must be left alone
- This won’t be the primary build method so the output, target, directory can be anywhere
- No existing test directory so this can be anywhere
I opted to create a new empty Maven project using IntelliJ and then copied over the existing source directory.
Create new Project
- “groupId“, this is your primary object path. Something like: “com.yourcompany”, “org.mozilla”, or “org.apache.maven.plugins”
- “artifactId“, this is the name of the project. Apache’s compiler plugin is “maven-compiler-plugin”.
This will generate an empty project with a src/main/, and src/test directories. This is the default Maven structure and for my project these aren’t going to work. I have to keep the existing object structure so existing scripts will continue to function correctly after this addition. If you open the pom.xml file you’ll see something like this:
<project> <groupId>com.tom</groupId> <artifcatId>worldBuilder</artifactId> <version>1.0-SNAPSHOT</version> </project>
Copy Over Source
After the empty project was created I needed to delete the conflicting source directory “src”. Then I copied over the one I has all the important stuff in it.
To use a non default Maven source directory I had to add a build section under project and then two tags to specify the build source and test source directories. The resulting pom.xml file looked like this:
<project> <groupId>com.tom</groupId> <artifcatId>worldBuilder</artifactId> <version>1.0-SNAPSHOT</version> <build> <sourceDirectory>src/</sourceDirectory> <testSourceDirectory>testsrc/</testSourceDirectory> </build> </project>
Exclude files from build
It was fairly easy to ignore files and directories once I used the maven compiler plugin. For the regular expressions, the paths are relative to the src directory, so if you want to ignore something in “org.abc”, you can put “org.abc/**”. Here’s the pom addition, note this goes inside “<plugins>” which is inside the “<build>” tag.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> <excludes> <exclude>org/abc/**</exclude> <exclude>com/tom/data/ASingleFile.java</exclude> </excludes> </configuration> </plugin>
Issues
- Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
- Fixed by removing MAVEN_OPTS environment variable. Reference