- Building a RESTful Web Service with Spring
- Ludovic Dewailly
- 409字
- 2021-07-09 21:44:51
Apache Maven
Maven is an open-source software project management tool. It was born out of the need to simplify Ant-based builds and it favors convention over configuration. In more concrete terms, it offers out of the box support for typical workflows, such as building Java web applications, provided one follows its conventions. However, customizing the build process can prove challenging, and many of its detractors point this design choice out as the main motivation for not using Maven.
Note
More information on Maven can be found at https://maven.apache.org.
While Maven offers many features, they are beyond the scope of this chapter. We will focus on its support for building Java web applications.
The following POM (Project Object Model) file illustrates how a project can be declared with Maven (in a file called pom.xml):
<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.packtpub.rest-with-spring</groupId> <artifactId>rest-with-spring</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> </project>
This pom.xml file defines a project with a group identifier, artifact identifier, and version. It also describes how the resulting application will be packaged (as a WAR file in this case).
Developers are free to choose their versioning schemes. However, Maven works best with a version of the form x.y
, where x
is the major version number and y
the minor version number.
Dependency management in Apache Maven
One build feature that makes development much easier is dependency management. It alleviates the need to manually download third-party libraries and package them with the application. Maven has robust dependency management based on artifact repositories.
Tip
The main repository for Maven is called the Central Repository and can be searched on at http://maven.org.
To declare dependencies, the sample POM file that was presented in the previous section can be amended in the following fashion:
// content omitted for readability purposes <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.9.Final</version> </dependency> <!-- Test Dependencies --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>
The <dependencies>
element in the amended POM file declares two dependencies:
Another build tool that has gathered a lot of popularity is Gradle and it is discussed in the next section
- 深入核心的敏捷開(kāi)發(fā):ThoughtWorks五大關(guān)鍵實(shí)踐
- 移動(dòng)UI設(shè)計(jì)(微課版)
- AIRAndroid應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)
- 碼上行動(dòng):用ChatGPT學(xué)會(huì)Python編程
- Learning Concurrent Programming in Scala
- Hands-On GUI Programming with C++ and Qt5
- JQuery風(fēng)暴:完美用戶體驗(yàn)
- PhoneGap 4 Mobile Application Development Cookbook
- Mastering Embedded Linux Programming
- After Effects CC案例設(shè)計(jì)與經(jīng)典插件(視頻教學(xué)版)
- Groovy 2 Cookbook
- 深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐
- C Primer Plus(第6版)中文版【最新修訂版】
- Ionic3與CodePush初探:支持跨平臺(tái)與熱更新的App開(kāi)發(fā)技術(shù)
- Python數(shù)據(jù)可視化之matplotlib實(shí)踐