Maven POM файл, что он делает? - PullRequest
0 голосов
/ 07 февраля 2020

Я только начал использовать Maven, в новом качестве ie, просто хочу разобраться с зависимостями. Я пытаюсь создать микро веб-сервис, используя iText и функциональность вывода PDF. Итак, мои первые шаги - посмотреть, смогу ли я получить вывод в формате pdf из очень простой Java программы.

В моем файле pom у меня есть следующие зависимости:

<!-- iText Core -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>${itext.version}</version>
    <type>pom</type>
</dependency>

<!-- iText pdfHTML add-on -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>html2pdf</artifactId>
    <version>2.1.6</version>
  </dependency>

После прочтения информация на сайте Maven, файл pom должна сделать всю тяжелую работу по получению зависимостей, с этим я немного запутался. Будет ли файл pom физически загружать файлы в папку приложения при запуске приложения, чтобы приложение могло использовать эти файлы?

, если это так, то, похоже, этого не происходит, и поэтому я что-то упустил в файле pom, чтобы включить это?

Полный файл pom:

<?xml version="1.0" encoding="UTF-8"?>

<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.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>my-app</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <itext.version>RELEASE</itext.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- iText Core -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>${itext.version}</version>
        <type>pom</type>
    </dependency>

    <!-- iText pdfHTML add-on -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>html2pdf</artifactId>
        <version>2.1.6</version>
      </dependency>   
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

Любая помощь приветствуется. Спасибо

Ответы [ 3 ]

0 голосов
/ 07 февраля 2020

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

То, что вы хотите (скопируйте зависимости рядом с выходным jar), может быть достигнуто с помощью целевой зависимости: copy-dependencies

Смотрите это сообщение в блоге:

https://technology.amis.nl/2017/02/09/download-all-directly-and-indirectly-required-jar-files-using-maven-install-dependencycopy-dependencies/

0 голосов
/ 07 февраля 2020

Управление зависимостями - одна из ключевых функций Maven.

Управление зависимостями: можно определить зависимости для других проектов. Во время сборки система сборки Maven разрешает зависимости, а также при необходимости строит зависимые проекты.

Разрешение зависимостей означает, что оно загружает все указанные jar-файлы в локальной системе.

Инструмент Maven считывает файл pom и разрешает зависимости проекта. Maven проверяет, доступны ли необходимые компоненты в локальном хранилище. Локальный репозиторий находится в папке .m2 / repository домашнего каталога пользователей.

Обратите внимание, что .m2 / является скрытой папкой. Если вы используете Linux, этот путь будет /home/someuser/.m2

Прочитать это

Если, однако, он не загружает банки или не создает. Каталог m2 вообще, то либо вы не правильно строите проект, либо не подключены к inte rnet.

0 голосов
/ 07 февраля 2020

Когда выполняется сборка maven, Maven автоматически загружает все jar-файлы зависимостей в локальный репозиторий.

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

Обычно эта папка называется .m2 .

. Здесь указан путь к этой папке по умолчанию - в зависимости от ОС:

Windows: C: \ Users \ Имя_пользователя \ .m2

Linux: /home/User_Name/.m2

Ма c: /Users/user_name/.m2

https://www.baeldung.com/maven-local-repository

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...