Подтвердить что ты не робот

Как загрузить источники в локальный репозиторий Maven

Предположим, у меня есть Java-проект Maven 2 на моей локальной машине. Я создаю файл проекта .jar и помещаю его в мое локальное хранилище Maven, используя mvn install.

Вопрос:

Как я могу заставить Maven также выдвинуть jar с исходными файлами проекта в локальный репозиторий?

Это полезно, если я буду использовать вышеупомянутый проект в качестве зависимости при разработке нового проекта и могу использовать функцию mvn eclipse:eclipse -DdownloadSources.

4b9b3361

Ответ 1

Этот фрагмент автоматически устанавливает/развертывает исходную банку из любой установки/развертывания:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.2</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Или из командной строки:

mvn clean source:jar install

Ответ 2

Я нашел лучший ответ, просто добавьте это в свой pom.xml

 <build>
      <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
            <execution>
                <id>attach-sources</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
       </plugin>
     </plugins>
  </build>

И запустить из командной строки:

mvn install

Теперь maven установить на ваш локальный репозиторий jar и исходники

Решение найдено по адресу: https://www.mkyong.com/maven/generate-source-code-jar-for-maven-based-project/ (я не связан ни в каком случае)

Ответ 3

Одно дополнение к ответу выше:

Это все еще не работало правильно для меня. Sources.jar создан и доступен в целевой папке, но не в локальном хранилище. Причиной этого было то, что я указал фазу по-другому: <phase>install</phase> В этом случае плагин maven install запускается первым и копирует файлы jar в локальный репозиторий. После этого генерируется source.jar (и, следовательно, не копируется).

[INFO] --- maven-install-plugin:2.4:install (default-install) @ foo ---
[INFO] Installing foo.jar into local repo
[INFO] Installing pom.xml into local repo
[INFO] Installing javadoc.jar into local repo
[INFO]
[INFO] --- maven-source-plugin:3.0.1:jar-no-fork (attach-sources) @ foo ---
[INFO] Building jar: foo-sources.jar

Поэтому важно указать более раннюю фазу, чем установка (как это правильно указано в принятом ответе).