1.5. Conceptual Model of a "Project"
Maven maintains a model of a project. You are not just compiling
source code into bytecode, you are developing a description of a
software project and assigning a unique set of coordinates to a
project. You are describing the attributes of the project. What is the
project’s license? Who develops and contributes to the project? What
other projects does this project depend upon? Maven is more than just
a "build tool", it is more than just an improvement on tools like make
and Ant, it is a platform that encompasses a new semantics related to
software projects and software development. This definition of a model
for every project enables such features as:
-
Dependency Management
-
Because a project is defined by a unique set of coordinates
consisting of a group identifier, an artifact identifier, and a
version, projects can now use these coordinates to declare
dependencies.
-
Remote Repositories
-
Related to dependency management, we can use the coordinates defined
in the Maven Project Object Model (POM) to create repositories of
Maven artifacts.
-
Universal Reuse of Build Logic
-
Plugins contain logic that works with the descriptive data and
configuration parameters defined in Project Object Model (POM); they
are not designed to operate upon specific files in known locations.
-
Tool Portability / Integration
-
Tools like Eclipse, NetBeans, and IntelliJ now have a common place
to find information about a project. Before the advent of Maven,
every IDE had a different way to store what was essentially a custom
Project Object Model (POM). Maven has standardized this description,
and while each IDE continues to maintain custom project files, they
can be easily generated from the model.
-
Easy Searching and Filtering of Project Artifacts
-
Tools like Nexus allow you to index and search the contents of a
repository using the information stored in the POM.
|