changeset 105:932436ea5196

new blog article
author Dirk Olmes <dirk.olmes@codedo.de>
date Tue, 28 Jul 2020 08:29:17 +0200
parents c56fdf7a343d
children 3cdb6b87125b
files content/Java/eclipse-jpms-junit.md content/images/eclipse-jpms/Classpath.png content/images/eclipse-jpms/NewProject1.jpg content/images/eclipse-jpms/NewProject2.png content/images/eclipse-jpms/TestClassFolder.png
diffstat 5 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/content/Java/eclipse-jpms-junit.md	Tue Jul 28 08:29:17 2020 +0200
@@ -0,0 +1,22 @@
+Title: Creating a plain Eclipse project using JPMS and JUnit tests 
+Date: 2020-07-27
+Tags: JDK
+Lang: en
+
+I use the [Eclipse IDE](https://www.eclipse.org/ide/) as my daily driver for development.  For a long time I have ignored the Java Platform Module System (JPMS) which was introduced in Java 9 and I'm still ignoring it today. If you want a proper module system simply [use the better one](https://www.osgi.org) that has existed for many, many years.
+
+One point I've always put forward when arguing against the use of JPMS is that there is no way to create a simple project in Eclipse that uses the JPMS and has unit tests as part of the same project - much like the project setup that [Maven](http://maven.apache.org) uses. Only today I found out that this is indeed possible if you know how to configure your project and hack your way with the module system.
+
+Let's start by creating a plain Java project in Eclipse. Make sure you have a JDK configured that supports JPMS and create separate output folders for sources and class files.
+![Eclipse new project wizard, first step]({static}/images/eclipse-jpms/NewProject1.jpg)
+
+On the next page of the wizard make sure that "Create module-info.java" is checked.
+
+![Eclipse new project wizard, second step]({static}/images/eclipse-jpms/NewProject2.png)
+
+When you hit *Finish* Eclipse will ask you for the module name of the project. Give your module a friendly name and start hacking away at your sources. Rather sooner than later you'll get to the point where you want to add tests for your code. Add a new source folder that will contain your tests. Configure the source folder for your tests to generate its class files into a different folder and make sure you trigger *Contains tests sources*.
+
+![Eclipse new project wizard, second step]({static}/images/eclipse-jpms/TestClassFolder.png)
+
+In the *Libraries* tab add the JUnit library to *Classpath* section, not to the *Modulepath* section. 
+This hack enables the JUnit classes to be found for compiling and running the unit tests. But you're not required to put the JUnit module into `module-info.java`, leaking the JUnit dependency out into the module path.
\ No newline at end of file
Binary file content/images/eclipse-jpms/Classpath.png has changed
Binary file content/images/eclipse-jpms/NewProject1.jpg has changed
Binary file content/images/eclipse-jpms/NewProject2.png has changed
Binary file content/images/eclipse-jpms/TestClassFolder.png has changed