

Table of Contents
Java 9 named module
An automatic module is a named module that is defined implicitly, since it does not have a module declaration. An ordinary named module, by contrast, is defined explicitly, with a module declaration; we will henceforth refer to those as explicit modules.
There is no practical way to tell, in advance, which other modules an automatic module might depend upon. After a module graph is resolved, therefore, an automatic module is made to read every other named module, whether automatic or explicit.
Java 9 names module example
Module Structure:

module-maven-example
module-info.java
Here guava is dependency that consider as automatic module. Need to add require statement in module-info.java as bellow.
Note: Modules name do not allowed – or . character as module name so maven will manage it. At time of require statement no need to specified dependency version.
/**
* Created by JavaDeveloperZone on 22-04-2017.
*/
module module.maven.demo {
requires guava;
}Demo.java
package com.javadeveloperzone;
import com.google.common.base.Optional;
/**
* Created by JavaDeveloperZone on 22-04-2017.
*/
public class Demo {
public static void main(String... args) {
Optional b = Optional.of(new Integer(10));
System.out.println(b.get());
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>module-demo</groupId>
<artifactId>com.javadeveloperzone</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>9</source>
<target>9</target>
<showWarnings>true</showWarnings>
<showDeprecation>false</showDeprecation>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
</dependencies>
</project>
Build
"C:\Program Files\Java\jdk-9\bin\java" -Dmaven.multiModuleProjectDirectory=F:\extrawork\java9-demo\module-maven-thirdparty-library-demo -Xmx2g -XX:ReservedCodeCacheSize=512m "-Dmaven.home=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2017.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2017.1\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2017.1\lib\idea_rt.jar=49366:C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2017.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2017.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2017.1 install [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building com.javadeveloperzone 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ com.javadeveloperzone --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ com.javadeveloperzone --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ com.javadeveloperzone --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory F:\extrawork\java9-demo\module-maven-thirdparty-library-demo\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ com.javadeveloperzone --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ com.javadeveloperzone --- [INFO] No tests to run. [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ com.javadeveloperzone --- [INFO] Building jar: F:\extrawork\java9-demo\module-maven-thirdparty-library-demo\target\com.javadeveloperzone-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ com.javadeveloperzone --- [INFO] Installing F:\extrawork\java9-demo\module-maven-thirdparty-library-demo\target\com.javadeveloperzone-1.0-SNAPSHOT.jar to C:\Users\Lenovo\.m2\repository\module-demo\com.javadeveloperzone\1.0-SNAPSHOT\com.javadeveloperzone-1.0-SNAPSHOT.jar [INFO] Installing F:\extrawork\java9-demo\module-maven-thirdparty-library-demo\pom.xml to C:\Users\Lenovo\.m2\repository\module-demo\com.javadeveloperzone\1.0-SNAPSHOT\com.javadeveloperzone-1.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.010 s [INFO] Finished at: 2017-04-22T12:01:36+05:30 [INFO] Final Memory: 12M/42M [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
Output:
10
