Рубрики
Без рубрики

Как начать работу с Maven

Как начать работу с Maven. Помечено как программирование, java, maven, веб-разработчик.

Этот пост был первоначально опубликован в Этот пост был первоначально опубликован в

Maven очень часто используется в отрасли, и я подумал, что было бы неплохо рассказать об основах Maven в этой статье, чтобы его можно было эффективно использовать 😄

В этой статье будут рассмотрены такие вещи, как основы maven, плагины maven, зависимости maven и жизненный цикл сборки maven.

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

Maven обычно используется для управления зависимостями, но это не единственное, на что способен maven.

Если вы не знаете, что такое управление зависимостями, не волнуйтесь 😄 . Я также расскажу об этом в этой статье.

Вы можете установить Maven из https://maven.apache.org/

Также убедитесь, что Maven установлен в ПУТИ так что команды mvn работают.

вы можете проверить, установлен ли maven и доступен ли к нему доступ с помощью команды

mvn -v

Также убедитесь, что установлен параметр JAVA_HOME .

По умолчанию Maven будет использовать jdk, который вы предоставили в JAVA_HOME. Это можно переопределить, но для этой статьи мы будем использовать jdk, предоставленный в JAVA_HOME.

Обычно IDE, такую как eclipse, можно использовать для легкого создания проектов maven. Но в этой статье я буду запускать команды maven из командной строки, чтобы шаги были четко понятны.

Выполните следующую команду, чтобы создать проект.

mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.first.app -DartifactId=first-maven-app

Архетип в приведенной выше команде – это не что иное, как образец шаблона проекта. group dId указывает, к какой группе относится ваш проект, и artifactId – это название проекта.

Как только вы запустите приведенную выше команду, maven может потребоваться около минуты или около того, чтобы загрузить необходимые плагины и создать проект.

Теперь создана папка с именем first-maven-app. Откройте папку, и вы увидите файл с именем pom.xml

POM расшифровывается как Объектная модель проекта. pom.xml содержит всю подробную информацию о вашем проекте, и именно здесь вы расскажете maven, что он должен делать.

Содержимое этого файла показано ниже

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4.0.0
  com.first.app
  first-maven-app
  jar
  1.0-SNAPSHOT
  first-maven-app
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
  

идентификатор группы и artifactId – это те же значения, которые мы имеем в командной строке.

упаковка – это формат упаковки артефакта. Значение по умолчанию – jar . У него могут быть и другие значения, такие как ear, war, tar и так далее.

version указывает номер версии артефакта. Если присутствует SNAPSHOT , то это указывает на то, что версия все еще находится в разработке и может быть нестабильной. Если номер версии не имеет SNAPSHOT

name – это название проекта

Скоро я расскажу о зависимостях и плагинах в Maven.

Супер ПОМПОН

pom.xml как вы можете видеть, он довольно мал. Причина этого в том, что большая часть конфигурации присутствует в чем-то, называемом Super POM, которое поддерживается внутри Maven.

pom.xml расширяет Super Pom, чтобы получить всю конфигурацию, присутствующую в super Pom.

Одна из конфигураций, присутствующих в Super Pom, указывает на следующее

Весь исходный код java находится внутри src/main/java

Весь тестовый код java присутствует внутри src/test/java

Я упомянул здесь только эту конфигурацию, поскольку в этой статье мы будем иметь дело как с исходным кодом, так и с тестовым кодом.

Весь код, обсуждаемый здесь, доступен в этом репозитории https://github.com/aditya-sridhar/first-maven-app

Давайте добавим простой java-код. Создайте следующую структуру папок

src/main/java/com/test/app/App.java

App.java – это java-код, который мы будем добавлять.

Скопируйте следующий код в App.java

package com.first.app;

import java.util.List;
import java.util.ArrayList;

public class App 
{
    public static void main( String[] args )
    {
        List items = new ArrayList();
        items.add(1);
        items.add(2);
        items.add(3);
        printVals(items);
        System.out.println("Sum: "+getSum(items));
    }

    public static void printVals(List items){
        items.forEach( item ->{
            System.out.println(item);
        });
    }

    public static int getSum(List items){
        int sum = 0;
        for(int item:items){
            sum += item;
        }
        return sum;
    }
}

Это простой код, который имеет 2 функции.

Но следует отметить одну вещь: код использует лямбда-выражения внутри цикла FOREACH в printVals функция.

Для запуска лямбда-выражений требуется минимум java 8. Но по умолчанию Maven 3.8.0 запускается с использованием java версии 1.6.

Поэтому нам нужно сказать maven использовать вместо этого java 1.8. Для этого мы будем использовать плагины Maven.

Мы будем использовать плагин компилятора Maven, чтобы указать, какую версию java использовать. Добавьте следующие строки в pom.xml


...

  
     
        org.apache.maven.plugins
        maven-compiler-plugin
        3.8.0
        
          1.8
          1.8
        
      
  

...

Видно, что java source и целевые версии установлены на 1.8

Плагины в основном выполняют некоторые действия в maven. Плагин компилятора компилирует исходные файлы

Полный pom.xml доступно здесь

Существует множество доступных плагинов maven. Зная, как хорошо использовать плагины, Maven можно использовать для создания удивительных вещей 😄

Обычно при написании кода мы будем использовать множество существующих библиотек. Эти существующие библиотеки – не что иное, как зависимости. Maven можно легко использовать для управления зависимостями.

В pom.xml вашего проекта вы можете увидеть следующую зависимость

 
    
      junit
      junit
      3.8.1
      test
    
  

Эта зависимость говорит о том, что нам понадобится junit . Junit используется для написания модульных тестов для кода java. Аналогичным образом можно добавить множество других зависимостей.

Допустим, вы хотите обработать Джейсона в коде. Затем вы можете добавить gson зависимость, как показано ниже


    com.google.code.gson
    gson
    2.8.5

Вы можете искать артефакты Maven в https://search.maven.org

Переходные Зависимости

Допустим, вы добавляете зависимость A к проекту. Сейчас A зависит от зависимости , вызываемой как B . B зависит от зависимости , называемой C .

Поскольку вы используете A в проекте, в идеале, вам также понадобится B и C .

Но, к счастью, этого достаточно, если вы добавите только A в pom.xml . Потому что Maven может выяснить, что A зависит от B, а B зависит от C. Таким образом, внутренне Maven автоматически загрузит B и C .

Здесь B и C являются переходными зависимостями.

Пользовательский репозиторий Maven

Все эти зависимости доступны в общедоступном центральном репозитории Maven http://repo.maven.apache.org/maven2

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

Добавление тестового класса

Поскольку зависимость junit присутствует в проекте, мы можем добавить тестовые классы.

Создайте следующую структуру папок

src/test/java/com/test/app/AppTest.java

AppTest.java является тестовым классом

Скопируйте следующий код в AppTest.java

package com.first.app;
import junit.framework.TestCase;
import java.util.List;
import java.util.ArrayList;

public class AppTest extends TestCase
{
    public AppTest( String testName )
    {
        super( testName );
    }

    public void testGetSum()
    {
        List items = new ArrayList();
        items.add(1);
        items.add(2);
        items.add(3);
        assertEquals( 6, App.getSum(items) );
    }
}

Этот класс проверяет функцию getSum(), присутствующую в классе App.

Maven следует жизненному циклу сборки для создания и распространения артефактов. Существует 3 основных жизненных цикла

  1. Жизненный цикл по умолчанию : Это касается создания и развертывания артефакта.
  2. Чистый жизненный цикл : Это касается очистки проекта
  3. Жизненный цикл сайта : Это касается документации сайта. Расскажу об этом в другой статье

Жизненный цикл состоит из фаз. Вот некоторые из важных этапов жизненного цикла default

  • утверждать : Проверьте, доступна ли вся необходимая информация для проекта

  • компилятор : Используется для компиляции исходных файлов. Выполните следующую команду для компиляции

mvn compile

После выполнения этой команды создается папка с именем target со всеми скомпилированными файлами.

  • test : Используется для запуска всех модульных тестов, присутствующих в проекте. Вот почему была необходима зависимость от Junit. Используя Junit, можно писать модульные тесты. Тестовые классы можно запускать с помощью команды
mvn test
  • package : Это позволит выполнить все вышеуказанные этапы, а затем упаковать артефакт. Здесь он упакует его в файл jar , поскольку pom указывает, что требуется jar. Для этого выполните следующую команду
mvn package

Файл jar создается внутри папки target

  • проверить : Это позволит убедиться, что в проекте соблюдены критерии качества

  • устанавливать : Это приведет к установке пакета в локальный репозиторий. Расположение локального репозитория обычно ${user.home}/.m2/repository . Для этого используйте следующую команду

mvn install
  • развернуть : Это используется для развертывания пакета в удаленном репозитории

Еще одна команда, которая обычно используется, – это команда очистки, которая приведена ниже

mvn clean

Эта команда очищает все, что находится внутри папки target

Официальное руководство Maven: https://maven.apache.org/guides/getting-started/

Подробнее о POM: Подробнее о POM:

Подробнее о жизненном цикле сборки: https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Теперь вы знаете, как использовать Maven. В этой статье рассматриваются только основы pom, плагины, зависимости и жизненный цикл сборки. Чтобы узнать больше о Maven, ознакомьтесь со ссылками, которые я привел выше.

Счастливого кодирования 😄

Не стесняйтесь связаться со мной в LinkedIn или подписаться на меня в Twitter.

Если вам понравился этот пост, вы можете зайти на мой сайт https://adityasridhar.com для других подобных сообщений

Оригинал: “https://dev.to/adityasridhar/how-to-get-started-with-maven-398f”