How to install maven on windows, linux, mac

Installing Maven on Mac OS X

To install Maven on Mac OS X operating system, download the latest version from the Apache Maven site, select the Maven binary tar.gz file, for example: apache-maven-3.3.9-bin.tar.gz.

Extract the archive to your desired location.

4.1. Adding Maven to the Environment Path

Open the terminal and switch to the directory where the files were extracted to and then login as Super – User.

Remove the tar.gz archive:

Fix the permissions:

Switch the Maven contents:

Archive the Admin session:

Add Maven binaries to the path and append.

Ctrl+x to Save and Exit from “nano”.

To load the new set up run:

To test the new installation run:

You are now ready to use Maven on your Mac OS X.

4.2. HighSierra Compatibility

For HighSierra users, we’ll need to additionally add Maven binaries to the path and append.

Ctrl+x to save and exit from “nano”.

To load the new set up run: bash

Use the Compiler Plugin

We can specify the desired Java version in the compiler plugin.

2.1. Compiler Plugin

The first option is setting the version in compiler plugin properties:

The Maven compiler accepts this command with –target and –source versions. If we want to use the Java 8 language features the –source should be set to 1.8.

Also, for the compiled classes to be compatible with JVM 1.8, the –target value should be 1.8.

The default value for both of them is 1.6 version.

Alternatively, we can configure the compiler plugin directly:

The maven-compiler-plugin also has additional configuration properties that allow us to have more control over the compilation process beyond -source and -target versions.

2.2  Java 9 and Beyond

Furthermore, starting from JDK 9 version, we can use a new -release command-line option. This new argument will automatically configure the compiler to produce class files that will link against the implementation of the given platform version.

By default, the -source and -target options don’t guarantee a cross-compilation.

This means that we cannot run our application on older versions of the platform. Additionally, to compile and run the programs for older Java versions, we also need to specify -bootclasspath option.

To cross-compile correctly, the new -release option replaces three flags: -source, -target and -bootclasspath.

After transforming our examples, for the plugin properties we can declare:

And for the maven-compiler-plugin starting from the 3.6 version we can write:

As we notice, we can add the Java version in a new <release> attribute. In this example, we compile our application for Java 7.

Even more, we don’t need a JDK 7 installed in our machine. Java 9 already contains all the information for linking the new language features with JDK 7.

Introduction

Building a software project typically consists of such tasks as downloading dependencies, putting additional jars on a classpath, compiling source code into binary code, running tests, packaging compiled code into deployable artifacts such as JAR, WAR, and ZIP files, and deploying these artifacts to an application server or repository.

Apache Maven automates these tasks, minimizing the risk of humans making errors while building the software manually and separating the work of compiling and packaging our code from that of code construction.

In this tutorial, we’re going to explore this powerful tool for describing, building, and managing Java software projects using a central piece of information — the Project Object Model (POM) — that is written in XML.

Java 9 Updates

4.1. Configuration

Until Java 8, we used the version number as 1.x where x represents Java’s version, like 1.8 for Java 8.

For Java 9 and above, we can just use the version number directly:

Similarly, we can define the version using properties as:

Maven added its support for Java 9 in 3.5.0, so we’ll need at least that version. We’ll also need at least 3.8.0 of :

4.2. Build

Now it’s time to test our configuration.

First, let’s create a MavenCompilerPlugin class in which we’re importing a package from another module.

A simple one is javax.xml.XMLConstants.XML_NS_PREFIX:

Next, let’s compile it:

When using Java 9 defaults, though, we’ll get an error:

The error comes from the fact that this package is in a separate module that we haven’t included yet in our build.

The simplest way to solve this is by creating a module-info.java class and indicating that we require the java.xml module:

Now we can try again:

And our output will be:

Developers

Name Email Dev Id Roles Organization
Robert Scholte rfscholte<at>apache.org rfscholte PMC Chair
Arnaud Héritier aheritier<at>apache.org aheritier PMC Member
Anders Hammar andham<at>apache.org andham PMC Member
Barrie Treloar baerrach<at>apache.org baerrach PMC Member
Benson Margulies bimargulies<at>apache.org bimargulies PMC Member
Brian Fox brianf<at>apache.org brianf PMC Member Sonatype
Tamas Cservenak cstamas<at>apache.org cstamas PMC Member
Dennis Lundberg dennisl<at>apache.org dennisl PMC Member ASF
Daniel Kulp dkulp<at>apache.org dkulp PMC Member ASF
Emmanuel Venisse evenisse<at>apache.org evenisse PMC Member ASF
Guillaume Boué gboue<at>apache.org gboue PMC Member
Hervé Boutemy hboutemy<at>apache.org hboutemy PMC Member ASF
Igor Fedorenko igor<at>ifedorenko.com ifedorenko PMC Member Sonatype
Jason van Zyl jason<at>maven.org jvanzyl PMC Member
Karl Heinz Marbaise khmarbaise<at>apache.org khmarbaise PMC Member
Kristian Rosenvold krosenvold<at>apache.org krosenvold PMC Member
Milos Kleint mkleint PMC Member
Olivier Lamy olamy<at>apache.org olamy PMC Member
Michael Osipov michaelo<at>apache.org michaelo PMC Member
Ralph Goers rgoers<at>apache.org rgoers PMC Member Intuit
Stephane Nicoll snicoll<at>apache.org snicoll PMC Member ASF
Stephen Connolly stephenc<at>apache.org stephenc PMC Member
Tibor Digaňa tibordigana<at>apache.org tibordigana PMC Member
Vincent Siveton vsiveton<at>apache.org vsiveton PMC Member ASF
Wayne Fay wfay<at>apache.org wfay PMC Member ASF
Andreas Dangel adangel<at>apache.org adangel Committer
Brian Demers bdemers<at>apache.org bdemers Committer Sonatype
Fabrice Bellingard bellingard Committer
Benjamin Bentmann bentmann<at>apache.org bentmann Committer Sonatype
Chris Graham chrisgwarp<at>apache.org chrisgwarp Committer
Dan Tran dantran<at>apache.org dantran Committer
Damian Bradicich dbradicich<at>apache.org dbradicich Committer Sonatype
Brett Porter brett<at>apache.org brett Committer ASF
Daniel Fabulich dfabulich<at>apache.org dfabulich Committer
Fabrizio Giustina fgiust<at>apache.org fgiust Committer openmind
Evgeny Mandrikov godin<at>apache.org godin Committer SonarSource
Andrew Williams handyande<at>apache.org handyande Committer
Dominik Bartholdi imod<at>apache.org imod Committer
Jeff Jensen jjensen Committer
Lukas Theussl ltheussl<at>apache.org ltheussl Committer
Mark Hobson markh<at>apache.org markh Committer
Mauro Talevi mauro Committer
Mirko Friedenhagen mfriedenhagen<at>apache.org mfriedenhagen Committer
Manfred Moser mmoser<at>apache.org mmoser Committer
Nicolas de Loof nicolas Committer
Maria Odea B. Ching oching Committer
Paul Gier pgier<at>apache.org pgier Committer Red Hat
Petar Tahchiev ptahchiev<at>apache.org ptahchiev Committer
Raphaël Piéroni rafale<at>apache.org rafale Committer Dexem
Christian Schulte schulte<at>apache.org schulte Committer
Simone Tripodi simonetripodi<at>apache.org simonetripodi Committer
Christian Stein sor<at>apache.org sor Committer
Mark Struberg struberg<at>apache.org struberg Committer
Tony Chemit tchemit<at>apache.org tchemit Committer CodeLutin
Vincent Massol vmassol<at>apache.org vmassol Committer ASF
Andreas Gudian agudian<at>apache.org agudian Emeritus
Allan Q. Ramirez aramirez Emeritus
Henri Yandell bayard Emeritus
Carlos Sanchez carlos<at>apache.org carlos Emeritus ASF
Chris Stevenson chrisjs Emeritus
David Blevins dblevins Emeritus
Daniel Rall dlr Emeritus
Edwin Punzalan epunzalan<at>apache.org epunzalan Emeritus
Felipe Leme felipeal Emeritus
John Casey jdcasey<at>apache.org jdcasey Emeritus ASF
Jesse McConnell jmcconnell<at>apache.org jmcconnell Emeritus ASF
Joakim Erdfelt joakime<at>apache.org joakime Emeritus ASF
Johnny Ruiz III jruiz<at>apache.org jruiz Emeritus
James Strachan jstrachan Emeritus
Ernesto Tolentino Jr. jtolentino<at>apache.org jtolentino Emeritus ASF
Kenney Westerhof kenney<at>apache.org kenney Emeritus Neonics
Mike Perham mperham<at>gmail.com mperham Emeritus IBM
Oleg Gusakov ogusakov Emeritus
Patrick Schneider pschneider<at>gmail.com pschneider Emeritus
Rahul Thakur rinku Emeritus
Shinobu Kuwai shinobu Emeritus
Torbjorn Eikli Smorgrav smorgrav Emeritus
Trygve Laugstol trygvis<at>apache.org trygvis Emeritus ASF
Wendy Smoak wsmoak<at>apache.org wsmoak Emeritus

Деревья зависимостей

Одна из наиболее полезных функций Maven ― поддержка управления зависимостями: вы просто определяете библиотеки, от которых зависит ваше приложение, а Maven находит их (в локальном или центральном хранилище), загружает и использует для компиляции кода.

В некоторых случаях может потребоваться знание происхождения определенной зависимости — например, если в сборке оказались разные и несовместимые версии одного и того же JAR-файла. В этом случае нужно предотвратить включение в сборку одной версии JAR-файла, но сначала найти зависимости, удерживающие JAR.

Поиск зависимостей оказывается на удивление простым делом, если знать следующую команду:

mvn dependency:tree

Аргумент отображает все прямые зависимости, а затем показывает все подзависимости (а также их подзависимости и т.д.). Например, в листинге 5 приведен отрывок из клиентской библиотеки, требуемой одной из моих зависимостей.

Листинг 5. Дерево зависимостей Maven
 ------------------------------------------------------------------------
 Building Client library for communicating with the LDE
    task-segment: 
 ------------------------------------------------------------------------
 
 com.lmt.pos:sis-client:jar:2.1.14
 +- org.codehaus.woodstox:woodstox-core-lgpl:jar:4.0.7:compile
 |  \- org.codehaus.woodstox:stax2-api:jar:3.0.1:compile
 +- org.easymock:easymockclassextension:jar:2.5.2:test
 |  +- cglib:cglib-nodep:jar:2.2:test
 |  \- org.objenesis:objenesis:jar:1.2:test

Из видно, что проекту требуются библиотеки и . Библиотеке , в свою очередь, требуются библиотеки и . В случае возникновения проблем с , таких как наличие двух версий, 1.2 и 1.3, это дерево зависимостей показало бы, что артефакт 1.2 импортирован косвенным путем библиотекой .

Аргумент сэкономил мне много часов диагностики ошибочной сборки; надеюсь, что и для вас он сделает то же самое.

Специальные плагины Maven

Maven предоставляет в распоряжение программиста десятки готовых плагинов, но иногда может потребоваться какой-нибудь специальный плагин. Создать специальный плагин в Maven легко.

  1. Создайте новый проект, настроив упаковку POM на .
  2. Включите вызов , определяющий цели вашего плагина.
  3. Создайте класс плагина Maven (класс, расширяющий ).
  4. Добавьте комментарии Javadoc для этого класса, чтобы определить цели, и для переменных, которые будут служить в качестве параметров конфигурации.
  5. Реализуйте метод , который будет вызываться при вызове плагина.

В качестве примера в листинге 8 показаны соответствующие части специального плагина для развертывания Tomcat.

Листинг 8. TomcatDeployerMojo.java
package net.fpic.maven.plugins;

import java.io.File;
import java.util.StringTokenizer;

import net.fpic.tomcatservice64.TomcatDeploymentServerClient;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;

import com.javasrc.server.embedded.CommandRequest;
import com.javasrc.server.embedded.CommandResponse;
import com.javasrc.server.embedded.credentials.Credentials;
import com.javasrc.server.embedded.credentials.UsernamePasswordCredentials;
import com.javasrc.util.FileUtils;

/**
 * Цель, развертывающая Web-приложение в Tomcat
 *
 * @goal deploy
 * @phase install
 */
public class TomcatDeployerMojo extends AbstractMojo
{
	/**
	 * Имя хоста или IP-адрес сервера развертывания
	 * 
	 * @parameter alias="host" expression="${deploy.host}" @required
	 */
	private String serverHost;
	
	/**
	 * Порт сервера развертывания
	 * 
	 * @parameter alias="port" expression="${deploy.port}" default-value="58020"
	 */
	private String serverPort;

	/**
	 * Имя пользователя для подключения к менеджеру развертывания (если этот 
	 * параметр опущен, то плагин попытается развернуть приложение на сервере 
	 * без учетных данных)
	 * 
	 * @parameter alias="username" expression="${deploy.username}"
	 */
	private String username;

	/**
	 * Пароль для указанного имени пользователя
	 * 
	 * @parameter alias="password" expression="${deploy.password}"
	 */
	private String password;

	/**
	 * Имя исходного артефакта для развертывания, например, target/pos.war
	 * 
	 * @parameter alias="artifactSource" expression=${deploy.artifactSource}" 
	 * @required
	 */
	private String artifactSource;
	
	/**
	 * Имя места назначения для развертывания артефакта, например, ROOT.war. 
	 * При его отсутствии используется имя исходного артефакта (без 
	 * информации о пути)
	 * 
	 * @parameter alias="artifactDestination" 
	 *   expression=${deploy.artifactDestination}"
	 */
	private String artifactDestination;
	
    public void execute() throws MojoExecutionException
    {
    	getLog().info( "Server Host: " + serverHost + 
    			       ", Server Port: " + serverPort + 
    			       ", Artifact Source: " + artifactSource + 
    			       ", Artifact Destination: " + artifactDestination );

    	// Проверка полей
    	if( serverHost == null )
    	{
    		throw new MojoExecutionException( 
    		  "No deployment host specified, deployment is not possible" );
    	}
    	if( artifactSource == null )
    	{
    		throw new MojoExecutionException( 
    		  "No source artifact is specified, deployment is not possible" );
    	}

        ...
   }
}

В заголовке класса комментарий определяет цель, которую выполняет этот MOJO, а определяет этап, на котором выполняется цель. Каждое указанное свойство имеет аннотацию , которая содержит псевдоним, по которому этот параметр будет выполняться, а также выражение, которое указывает на системное свойство, содержащее фактическое значение. Если свойство имеет аннотацию , то оно обязательно. Если оно имеет аннотацию , то это значение будет использоваться по умолчанию. В методе можно вызвать , чтобы получить доступ к регистратору событий Maven, который в зависимости от уровня регистрации выводит указанное сообщение на стандартное устройство вывода. В случае ошибки плагина сообщение приведет к прерыванию процесса сборки.

Overview

In this quick tutorial, we’ll show how to set the Java version in Maven.

Before moving ahead, we can check the default JDK version of Maven. Running the mvn -v command will show the Java version in which Maven runs.

2. Use the Compiler Plugin

We can specify the desired Java version in the compiler plugin.

2.1. Compiler Plugin

The first option is setting the version in compiler plugin properties:

The Maven compiler accepts this command with –target and –source versions. If we want to use the Java 8 language features the –source should be set to 1.8.

Also, for the compiled classes to be compatible with JVM 1.8, the –target value should be 1.8.

The default value for both of them is 1.6 version.

Alternatively, we can configure the compiler plugin directly:

The maven-compiler-plugin also has additional configuration properties that allow us to have more control over the compilation process beyond -source and -target versions.

2.2  Java 9 and Beyond

Furthermore, starting from JDK 9 version, we can use a new -release command-line option. This new argument will automatically configure the compiler to produce class files that will link against the implementation of the given platform version.

By default, the -source and -target options don’t guarantee a cross-compilation.

This means that we cannot run our application on older versions of the platform. Additionally, to compile and run the programs for older Java versions, we also need to specify -bootclasspath option.

To cross-compile correctly, the new -release option replaces three flags: -source, -target and -bootclasspath.

After transforming our examples, for the plugin properties we can declare:

And for the maven-compiler-plugin starting from the 3.6 version we can write:

As we notice, we can add the Java version in a new <release> attribute. In this example, we compile our application for Java 7.

Even more, we don’t need a JDK 7 installed in our machine. Java 9 already contains all the information for linking the new language features with JDK 7.

3. Spring Boot Specification

Spring Boot applications specify the JDK version inside of the properties tags in the pom.xml file.

First, we need to add spring-boot-starter-parent as a parent to our project:

This parent POM allows us to configure default plugins and multiple properties including the Java version: By default, the Java version is 1.8.

However, we can override the default version of the parent by specifying the java.version property:

By setting the java.version property we declare that the source and the target Java versions are both equal to 1.9.

Above all, we should keep in mind that this property is a Spring Boot Specification. Additionally, starting from the Spring Boot 2.0, Java 8 is the minimum version.

This means we can’t use or configure Spring Boot for the older JDK versions.

This quick tutorial demonstrates the possible ways of setting Java version in our Maven project.

In summary:

  • Using <java.version> is possible only with the Spring Boot application
  • For simple cases maven.compiler.source and maven.compiler.target properties should be the best-fit
  • Finally, to have more control over the compilation process use the maven-compiler-plugin configuration settings

Настройка MANIFEST.MF

Плагин позволяет изменять общие части файла , но иногда нужна более глубокая настройка MANIFEST.MF. Решение состоит из двух частей.

  1. Определите все свои специальные конфигурации в файле «шаблона» MANIFEST.MF.
  2. Настройте на использование файла MANIFEST.MF и введите в него любые настройки Maven.

В качестве примера рассмотрим JAR-файл, содержащий агент Java. Чтобы выполнить агент Java, необходимо определить и разрешения. В листинге 3 показано содержимое такого файла MANIFEST.MF.

Листинг 3. Определение Premain-Class в специализированном файле MANIFEST.MF
Manifest-Version: 1.0
Premain-Class: com.geekcap.openapm.jvm.agent.Agent
Can-Redefine-Classes: true
Can-Retransform-Classes: true
Can-Set-Native-Method-Prefix: true

В указано, что агенту разрешается переопределять и преобразовывать классы. Далее, обновляем , включив файл MANIFEST.MF, как показано в листинге 4.

Листинг 4. Включение Premain-Class
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestFile>
                          src/main/resources/META-INF/MANIFEST.MF
                        </manifestFile>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>
                              com.geekcap.openapm.ui.PerformanceAnalyzer
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
Maven 3

Maven 2 стал одним из самых популярных и широко используемых инструментов с открытым исходным кодом для управления жизненным циклом Java-приложений. Версия Maven 3, предложенная в сентябре 2010 года в виде alpha 5, привнесла в Maven некоторые долгожданные изменения. В разделе можно узнать, что нового появилось в Maven 3.

Это интересный пример, потому что в нем определен , который позволяет JAR-файлу работать в качестве агента Java, и в то же время содержится , который позволяет JAR-файлу быть исполняемым. В этом конкретном примере я использовал (созданный мной инструмент для отслеживания кода), чтобы определить трассировку кода, которая будет записана агентом Java, и пользовательский интерфейс, который облегчает анализ записанных трассировок. Короче говоря, пример демонстрирует возможности объединения явного файла манифеста с динамическими изменениями.

Spring Boot Specification

Spring Boot applications specify the JDK version inside of the properties tags in the pom.xml file.

First, we need to add spring-boot-starter-parent as a parent to our project:

This parent POM allows us to configure default plugins and multiple properties including the Java version: By default, the Java version is 1.8.

However, we can override the default version of the parent by specifying the java.version property:

By setting the java.version property we declare that the source and the target Java versions are both equal to 1.9.

Above all, we should keep in mind that this property is a Spring Boot Specification. Additionally, starting from the Spring Boot 2.0, Java 8 is the minimum version.

This means we can’t use or configure Spring Boot for the older JDK versions.

Developers

Name Email Dev Id Roles Organization
Brian Fox brianf<at>apache.org brianf PMC Chair Sonatype
Arnaud Héritier aheritier<at>apache.org aheritier PMC Member
Barrie Treloar baerrach PMC Member
Benjamin Bentmann bentmann<at>apache.org bentmann PMC Member Sonatype
Brett Porter brett<at>apache.org brett PMC Member ASF
Carlos Sanchez carlos<at>apache.org carlos PMC Member ASF
Dennis Lundberg dennisl<at>apache.org dennisl PMC Member ASF
Daniel Fabulich dfabulich<at>apache.org dfabulich PMC Member
Daniel Kulp dkulp<at>apache.org dkulp PMC Member ASF
Emmanuel Venisse evenisse<at>apache.org evenisse PMC Member ASF
Hervé Boutemy hboutemy<at>apache.org hboutemy PMC Member
John Casey jdcasey<at>apache.org jdcasey PMC Member ASF
Kenney Westerhof kenney<at>apache.org kenney PMC Member Neonics
Kristian Rosenvold krosenvold<at>apache.org krosenvold PMC Member
Lukas Theussl ltheussl<at>apache.org ltheussl PMC Member ASF
Milos Kleint mkleint PMC Member
Maria Odea B. Ching oching PMC Member
Olivier Lamy olamy<at>apache.org olamy PMC Member
Paul Gier pgier<at>apache.org pgier PMC Member Red Hat
Ralph Goers rgoers<at>apache.org rgoers PMC Member Intuit
Stephane Nicoll snicoll<at>apache.org snicoll PMC Member ASF
Stephen Connolly stephenc<at>apache.org stephenc PMC Member
Vincent Massol vmassol<at>apache.org vmassol PMC Member ASF
Vincent Siveton vsiveton<at>apache.org vsiveton PMC Member ASF
Wayne Fay wfay<at>apache.org wfay PMC Member ASF
Wendy Smoak wsmoak<at>apache.org wsmoak PMC Member
Brian Demers bdemers<at>apache.org bdemers Committer Sonatype
Fabrice Bellingard bellingard Committer
Tamas Cservenak cstamas<at>apache.org cstamas Committer Sonatype
Dan Tran dantran Committer
Damian Bradicich dbradicich<at>apache.org dbradicich Committer Sonatype
Igor Fedorenko igor<at>ifedorenko.com ifedorenko Committer Sonatype
Fabrizio Giustina fgiust<at>apache.org fgiust Committer openmind
Andrew Williams handyande<at>apache.org handyande Committer
Jeff Jensen jjensen Committer
Jason van Zyl jason<at>maven.org jvanzyl Founder, Committer Sonatype
Raphaël Piéroni rafale<at>apache.org rafale Committer Dexem
Allan Q. Ramirez aramirez Emeritus
Henri Yandell bayard Emeritus
Chris Stevenson chrisjs Emeritus
David Blevins dblevins Emeritus
Daniel Rall dlr Emeritus
Edwin Punzalan epunzalan<at>apache.org epunzalan Emeritus
Felipe Leme felipeal Emeritus
Jesse McConnell jmcconnell<at>apache.org jmcconnell Emeritus ASF
Joakim Erdfelt joakime<at>apache.org joakime Emeritus ASF
James Strachan jstrachan Emeritus
Ernesto Tolentino Jr. jtolentino<at>apache.org jtolentino Emeritus ASF
Mark Hobson markh<at>apache.org markh Emeritus
Mike Perham mperham<at>gmail.com mperham Emeritus IBM
Oleg Gusakov ogusakov Emeritus
Patrick Schneider pschneider<at>gmail.com pschneider Emeritus
Petar Tahchiev ptahchiev<at>apache.org ptahchiev Emeritus
Rahul Thakur rinku Emeritus
Shinobu Kuwai shinobu Emeritus
Torbjorn Eikli Smorgrav smorgrav Emeritus
Trygve Laugstol trygvis<at>apache.org trygvis Emeritus ASF

Developers

Name Email Dev Id Roles Organization
Robert Scholte rfscholte<at>apache.org rfscholte PMC Chair
Arnaud Héritier aheritier<at>apache.org aheritier PMC Member
Anders Hammar andham<at>apache.org andham PMC Member
Barrie Treloar baerrach<at>apache.org baerrach PMC Member
Benson Margulies bimargulies<at>apache.org bimargulies PMC Member
Brian Fox brianf<at>apache.org brianf PMC Member Sonatype
Tamas Cservenak cstamas<at>apache.org cstamas PMC Member
Dennis Lundberg dennisl<at>apache.org dennisl PMC Member ASF
Daniel Kulp dkulp<at>apache.org dkulp PMC Member ASF
Emmanuel Venisse evenisse<at>apache.org evenisse PMC Member ASF
Guillaume Boué gboue<at>apache.org gboue PMC Member
Hervé Boutemy hboutemy<at>apache.org hboutemy PMC Member ASF
Igor Fedorenko igor<at>ifedorenko.com ifedorenko PMC Member Sonatype
Jason van Zyl jason<at>maven.org jvanzyl PMC Member
Karl Heinz Marbaise khmarbaise<at>apache.org khmarbaise PMC Member
Kristian Rosenvold krosenvold<at>apache.org krosenvold PMC Member
Milos Kleint mkleint PMC Member
Olivier Lamy olamy<at>apache.org olamy PMC Member
Michael Osipov michaelo<at>apache.org michaelo PMC Member
Ralph Goers rgoers<at>apache.org rgoers PMC Member Intuit
Stephane Nicoll snicoll<at>apache.org snicoll PMC Member ASF
Stephen Connolly stephenc<at>apache.org stephenc PMC Member
Tibor Digaňa tibordigana<at>apache.org tibordigana PMC Member
Vincent Siveton vsiveton<at>apache.org vsiveton PMC Member ASF
Wayne Fay wfay<at>apache.org wfay PMC Member ASF
Andreas Dangel adangel<at>apache.org adangel Committer
Brian Demers bdemers<at>apache.org bdemers Committer Sonatype
Fabrice Bellingard bellingard Committer
Benjamin Bentmann bentmann<at>apache.org bentmann Committer Sonatype
Chris Graham chrisgwarp<at>apache.org chrisgwarp Committer
Dan Tran dantran<at>apache.org dantran Committer
Damian Bradicich dbradicich<at>apache.org dbradicich Committer Sonatype
Brett Porter brett<at>apache.org brett Committer ASF
Daniel Fabulich dfabulich<at>apache.org dfabulich Committer
Fabrizio Giustina fgiust<at>apache.org fgiust Committer openmind
Evgeny Mandrikov godin<at>apache.org godin Committer SonarSource
Andrew Williams handyande<at>apache.org handyande Committer
Dominik Bartholdi imod<at>apache.org imod Committer
Jeff Jensen jjensen Committer
Lukas Theussl ltheussl<at>apache.org ltheussl Committer
Mark Hobson markh<at>apache.org markh Committer
Mauro Talevi mauro Committer
Mirko Friedenhagen mfriedenhagen<at>apache.org mfriedenhagen Committer
Manfred Moser mmoser<at>apache.org mmoser Committer
Nicolas de Loof nicolas Committer
Maria Odea B. Ching oching Committer
Paul Gier pgier<at>apache.org pgier Committer Red Hat
Petar Tahchiev ptahchiev<at>apache.org ptahchiev Committer
Raphaël Piéroni rafale<at>apache.org rafale Committer Dexem
Christian Schulte schulte<at>apache.org schulte Committer
Simone Tripodi simonetripodi<at>apache.org simonetripodi Committer
Mark Struberg struberg<at>apache.org struberg Committer
Tony Chemit tchemit<at>apache.org tchemit Committer CodeLutin
Vincent Massol vmassol<at>apache.org vmassol Committer ASF
Andreas Gudian agudian<at>apache.org agudian Emeritus
Allan Q. Ramirez aramirez Emeritus
Henri Yandell bayard Emeritus
Carlos Sanchez carlos<at>apache.org carlos Emeritus ASF
Chris Stevenson chrisjs Emeritus
David Blevins dblevins Emeritus
Daniel Rall dlr Emeritus
Edwin Punzalan epunzalan<at>apache.org epunzalan Emeritus
Felipe Leme felipeal Emeritus
John Casey jdcasey<at>apache.org jdcasey Emeritus ASF
Jesse McConnell jmcconnell<at>apache.org jmcconnell Emeritus ASF
Joakim Erdfelt joakime<at>apache.org joakime Emeritus ASF
Johnny Ruiz III jruiz<at>apache.org jruiz Emeritus
James Strachan jstrachan Emeritus
Ernesto Tolentino Jr. jtolentino<at>apache.org jtolentino Emeritus ASF
Kenney Westerhof kenney<at>apache.org kenney Emeritus Neonics
Mike Perham mperham<at>gmail.com mperham Emeritus IBM
Oleg Gusakov ogusakov Emeritus
Patrick Schneider pschneider<at>gmail.com pschneider Emeritus
Rahul Thakur rinku Emeritus
Shinobu Kuwai shinobu Emeritus
Torbjorn Eikli Smorgrav smorgrav Emeritus
Trygve Laugstol trygvis<at>apache.org trygvis Emeritus ASF
Wendy Smoak wsmoak<at>apache.org wsmoak Emeritus

Dependency File Details

Filename Size Entries Classes Packages Java Version Debug Information Sealed
commons-io-2.5.jar 208.7 kB 142 123 7 1.6 Yes No
junit-4.12.jar 314.9 kB 323 286 30 1.5 Yes No
commons-compress-1.19.jar 615.1 kB 395 354 29 1.7 Yes No
maven-aether-provider-3.0.jar 51.2 kB 38 21 1 1.5 Yes No
maven-artifact-3.0.jar 51.9 kB 57 32 11 1.5 Yes No
maven-core-3.0.jar 527 kB 406 332 39 1.5 Yes No
maven-model-3.0.jar 164.7 kB 67 50 3 1.5 Yes No
maven-model-builder-3.0.jar 148 kB 142 109 16 1.5 Yes No
maven-plugin-api-3.0.jar 48.9 kB 46 25 6 1.5 Yes No
maven-repository-metadata-3.0.jar 30.1 kB 25 7 2 1.5 Yes No
maven-settings-3.0.jar 46.7 kB 33 17 2 1.5 Yes No
maven-settings-builder-3.0.jar 37.8 kB 49 28 5 1.5 Yes No
maven-shared-utils-3.2.1.jar 166.6 kB 109 84 10 1.6 Yes No
assertj-core-1.7.1.jar 618.9 kB 520 489 18 1.6 Yes No
plexus-archiver-4.2.0.jar 196.4 kB 164 132 18 1.7 Yes No
plexus-classworlds-2.2.3.jar 46.1 kB 51 36 5 1.4 Yes No
plexus-component-annotations-1.7.1.jar 4.3 kB 15 3 1 1.6 No No
plexus-interpolation-1.25.jar 85.3 kB 79 62 7 1.6 Yes No
plexus-io-3.2.0.jar 75.6 kB 85 64 7 1.7 Yes No
plexus-utils-3.3.0.jar 263.3 kB 130 105 9 1.6 Yes No
hamcrest-core-1.3.jar 45 kB 52 45 3 1.5 Yes No
snappy-0.4.jar 58 kB 34 24 1 1.6 Yes No
aether-api-1.7.jar 74.2 kB 102 82 11 1.5 Yes No
aether-impl-1.7.jar 106.3 kB 72 58 2 1.5 Yes No
aether-spi-1.7.jar 13.5 kB 31 16 4 1.5 Yes No
aether-util-1.7.jar 107.9 kB 101 78 13 1.5 Yes No
plexus-cipher-1.4.jar 13.5 kB 20 6 1 1.4 Yes No
plexus-sec-dispatcher-1.3.jar 28.6 kB 31 13 3 1.4 Yes No
sisu-guice-2.1.7-noaop.jar 471.7 kB 416 402 8 1.5 Yes No
sisu-inject-bean-1.4.2.jar 153 kB 165 138 13 1.5 Yes No
sisu-inject-plexus-1.4.2.jar 201.7 kB 199 156 26 1.5 Yes No
xz-1.8.jar 108.6 kB 129 116 9 1.5 No Yes
Total Size Entries Classes Packages Java Version Debug Information Sealed
32 5.1 MB 4228 3493 320 1.7 30 1
compile: 27 compile: 3.9 MB compile: 3166 compile: 2536 compile: 259 compile: 26
test: 3 test: 978.9 kB test: 895 test: 820 test: 51 test: 3
runtime: 2 runtime: 159.7 kB runtime: 167 runtime: 137 runtime: 10 runtime: 1 runtime: 1

Какие еще есть жизненные циклы Maven

Хотя в работе чаще используется default lifecycle, о котором мы говорили выше, он не единственный.

Всего жизненных циклов у Maven определено три:

  • default – этот цикл отвечает за развертывание проекта (и все предыдущие, предваряющие развертывание действия).
  • clean – отвечает за удаление файлов, оставшихся с предыдущей сборки. Удаляет папку target.
  • site – отвечает за создание документации.

mvn clean install

Довольно часто указывают две фазы подряд:

mvn clean install

Да, это фазы, но они принадлежат разным циклам. Тут запускается два цикла по очереди – сначала цикл clean, а затем цикл default.

Фаза clean не входит в default цикл. Фаза clean – это часть одноименного цикла clean.

Мы не можем указать, например:

mvn validate install

Это фазы из одного и того же цикла default, они не могут быть выдернуты из цикла и выполнены вне его (помните правило выполнения всех предыдущих фаз).

Так что хотя многие и считают, что в примере mvn clean install указаны некоторые две выбранные фазы одного цикла, это ложная догадка,  на самом деле тут выполняются два цикла, а не две фазы.

Project Transitive Dependencies

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupId ArtifactId Version Classifier Type Licenses
org.apache.commons commons-compress 1.19 jar Apache License, Version 2.0
org.apache.maven maven-model-builder 3.0 jar The Apache Software License, Version 2.0
org.apache.maven maven-plugin-api 3.0 jar The Apache Software License, Version 2.0
org.apache.maven maven-repository-metadata 3.0 jar The Apache Software License, Version 2.0
org.apache.maven maven-settings 3.0 jar The Apache Software License, Version 2.0
org.apache.maven maven-settings-builder 3.0 jar The Apache Software License, Version 2.0
org.codehaus.plexus plexus-classworlds 2.2.3 jar The Apache Software License, Version 2.0
org.codehaus.plexus plexus-component-annotations 1.7.1 jar Apache License, Version 2.0
org.codehaus.plexus plexus-io 3.2.0 jar Apache License, Version 2.0
org.iq80.snappy snappy 0.4 jar Apache License 2.0
org.sonatype.aether aether-api 1.7 jar The Apache Software License, Version 2.0
org.sonatype.aether aether-impl 1.7 jar The Apache Software License, Version 2.0
org.sonatype.aether aether-spi 1.7 jar The Apache Software License, Version 2.0
org.sonatype.aether aether-util 1.7 jar The Apache Software License, Version 2.0
org.sonatype.plexus plexus-cipher 1.4 jar Apache Public License 2.0
org.sonatype.plexus plexus-sec-dispatcher 1.3 jar Apache Public License 2.0
org.sonatype.sisu sisu-guice 2.1.7 noaop jar The Apache Software License, Version 2.0
org.sonatype.sisu sisu-inject-bean 1.4.2 jar The Apache Software License, Version 2.0
org.sonatype.sisu sisu-inject-plexus 1.4.2 jar The Apache Software License, Version 2.0

runtime

The following is a list of runtime dependencies for this project. These dependencies are required to run the application:

GroupId ArtifactId Version Type Licenses
org.apache.maven maven-aether-provider 3.0 jar The Apache Software License, Version 2.0
org.tukaani xz 1.8 jar Public Domain
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *