How to install maven on windows, linux, mac
Содержание:
- Installing Maven on Mac OS X
- Use the Compiler Plugin
- Introduction
- Java 9 Updates
- Developers
- Деревья зависимостей
- Специальные плагины Maven
- Overview
- 2. Use the Compiler Plugin
- 3. Spring Boot Specification
- Настройка MANIFEST.MF
- Spring Boot Specification
- Developers
- Developers
- Dependency File Details
- Какие еще есть жизненные циклы Maven
- Project Transitive Dependencies
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 | 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 легко.
- Создайте новый проект, настроив упаковку POM на .
- Включите вызов , определяющий цели вашего плагина.
- Создайте класс плагина Maven (класс, расширяющий ).
- Добавьте комментарии Javadoc для этого класса, чтобы определить цели, и для переменных, которые будут служить в качестве параметров конфигурации.
- Реализуйте метод , который будет вызываться при вызове плагина.
В качестве примера в листинге 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. Решение состоит из двух частей.
- Определите все свои специальные конфигурации в файле «шаблона» MANIFEST.MF.
- Настройте на использование файла 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 | 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 | 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 |