Configure Maven 3.6 and Springboot to build Java Web projects

 

The latest Maven 3.6 build Java Web project in conjunction with Spring boot is very convenient, just download Maven 3.6 to start building.

First, make sure that JDK is installed on the system:

[supervisor@localhost ~]$ java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Download Maven 3.6.1:

[supervisor@localhost ~]$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
--2019-04-15 20:04:34--  http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
//The host mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1:
//Connecting mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... Connected.
//HTTP request has been issued, waiting for response... 200 OK
//Length: 9136463 (8.7M) [application/x-gzip]
//Save to "apache-maven-3.6.1-bin.tar.gz"

100%[================================================================================================================================================================================================>] 9,136,463    391KB/s Use time 15 s

2019-04-15 20:04:49 (604 KB/s) - Preserved“ apache-maven-3.6.1-bin.tar.gz" [9136463/9136463])

Download the Maven installation package to / usr/java/

[supervisor@localhost ~]$ sudo mv apache-maven-3.6.1-bin.tar.gz /usr/java/.
[supervisor@localhost java]$ cd /usr/java
[supervisor@localhost java]$ sudo tar zxvf apache-maven-3.6.1-bin.tar.gz
[supervisor@localhost java]$ sudo mv apache-maven-3.6.1 apache-maven #Change directory to apache-maven
[supervisor@localhost java]$ sudo vim /etc/profile #Modifying environment variables

Add the following statement at the end of the / etc/profile file

 78 #JAVA Environment
 79 export JAVA_HOME=/usr/java/jdk1.8.0
 80 export M2_HOME=/usr/java/apache-maven
 81 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
 82 export PATH=$PATH:${JAVA_HOME}/bin:${M2_HOME}/bin
 83
[supervisor@localhost java]$ su root
[root@localhost java]$ source /etc/profile #Make environmental variable configuration take effect immediately
[root@localhost java]$ exit
[supervisor@localhost java]$ mvn -v #Successful installation of maven to display version information
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: /usr/java/apache-maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"

Create a new project under the project catalogue and create subdirectories of the project:

[supervisor@localhost projects]$ mkdir myproject
[supervisor@localhost projects]$ cd myproject/
[supervisor@localhost myproject]$ mkdir -p src/main/java/Exmaple

Create a new pom.xml file in the myproject directory

<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>com.Example</groupId>
  <artifactId>myproject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
  </parent>
  <dependencies>
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
  </dependencies>
</project>

Enter the command mvn dependency:tree

maven will download related dependencies. Be careful not to modify the maven central warehouse to Aliyun. Some dependencies can not be found on Aliyun, and the project Build will fail.

Spring Boot introduces the concept of Starter. In this case, spring-boot-starter-web is a Starter, and Spring Boot will generate a Web application.

After a period of downloading, it finally shows that Build succeeded, listing the dependencies of Tree:

[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.Example:myproject >------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:3.1.1:tree (default-cli) @ myproject ---
[INFO] com.Example:myproject:jar:0.0.1-SNAPSHOT
[INFO] \- org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE:compile
[INFO]    +- org.springframework.boot:spring-boot-starter:jar:2.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot:jar:2.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.4.RELEASE:compile
[INFO]    |  |  +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO]    |  |  |  +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO]    |  |  |  \- org.slf4j:slf4j-api:jar:1.7.26:compile
[INFO]    |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2:compile
[INFO]    |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
[INFO]    |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile
[INFO]    |  +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO]    |  +- org.springframework:spring-core:jar:5.1.6.RELEASE:compile
[INFO]    |  |  \- org.springframework:spring-jcl:jar:5.1.6.RELEASE:compile
[INFO]    |  \- org.yaml:snakeyaml:jar:1.23:runtime
[INFO]    +- org.springframework.boot:spring-boot-starter-json:jar:2.1.4.RELEASE:compile
[INFO]    |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile
[INFO]    |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO]    |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.9.8:compile
[INFO]    |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8:compile
[INFO]    |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8:compile
[INFO]    |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8:compile
[INFO]    +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.4.RELEASE:compile
[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.17:compile
[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.17:compile
[INFO]    |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.17:compile
[INFO]    +- org.hibernate.validator:hibernate-validator:jar:6.0.16.Final:compile
[INFO]    |  +- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO]    |  +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO]    |  \- com.fasterxml:classmate:jar:1.4.0:compile
[INFO]    +- org.springframework:spring-web:jar:5.1.6.RELEASE:compile
[INFO]    |  \- org.springframework:spring-beans:jar:5.1.6.RELEASE:compile
[INFO]    \- org.springframework:spring-webmvc:jar:5.1.6.RELEASE:compile
[INFO]       +- org.springframework:spring-aop:jar:5.1.6.RELEASE:compile
[INFO]       +- org.springframework:spring-context:jar:5.1.6.RELEASE:compile
[INFO]       \- org.springframework:spring-expression:jar:5.1.6.RELEASE:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  12.270 s
[INFO] Finished at: 2019-04-15T20:42:09+08:00
[INFO] ------------------------------------------------------------------------

This process actually maven downloads and installs the spring,tomcat,log4j and related jboss tools and other related dependencies required by the project.

Next, create a new file src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

        @RequestMapping("/")
        String home() {
                return "Hello World!";
        }

        public static void main(String[] args) {
                SpringApplication.run(Example.class, args);
        }

}

Enter mvn spring-boot:run in the myproject directory

[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.Example:myproject >------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) > test-compile @ myproject >>>
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /alidata/projects/myproject/src/main/resources
[INFO] skip non existing resourceDirectory /alidata/projects/myproject/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ myproject ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /alidata/projects/myproject/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ myproject ---
[INFO] No sources to compile
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) < test-compile @ myproject <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) @ myproject ---

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.4.RELEASE)

2019-04-15 20:57:38.187  INFO 438 --- [           main] Example                                  : Starting Example with PID 438 (/alidata/projects/myproject/target/classes started by root in /alidata/projects/myproject)
2019-04-15 20:57:38.239  INFO 438 --- [           main] Example                                  : No active profile set, falling back to default profiles: default
2019-04-15 20:57:44.743  INFO 438 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-04-15 20:57:45.021  INFO 438 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-04-15 20:57:45.022  INFO 438 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
2019-04-15 20:57:46.409  INFO 438 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-04-15 20:57:46.410  INFO 438 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 7838 ms
2019-04-15 20:57:47.900  INFO 438 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-04-15 20:57:50.623  INFO 438 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-04-15 20:57:50.682  INFO 438 --- [           main] Example                                  : Started Example in 14.93 seconds (JVM running for 33.934)
2019-04-15 20:58:09.252  INFO 438 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-04-15 20:58:09.253  INFO 438 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-04-15 20:58:09.294  INFO 438 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 41 ms

Open with a browser

Tags: Maven Spring Java Apache

Posted on Tue, 16 Apr 2019 01:18:32 -0400 by mtimdog