Архив метки: pom

Java: собираем проект с Maven для совместной работы над проектом

Предыстория: есть java библиотека (в моем случае библиотека ektorp для работы с CouchDB)  которая имеет кучу зависимостей (то есть использует исходные коды других библиотек). Заботливый автор вместо упаковки всех необходимых библиотек (зависимостей) вместе с оригинальной библиотекой выложил свою библиотеку в общее хранилище (репозитарий) хороших библиотек Maven.

Задача: использовать библиотеку в совместном проекте. Над проектом будут работать другие люди, которые ничего не знаю о Maven и обучение этой технологии займет достаточное время. Поэтому принято решение собрать в один jar файл все зависимости библиотеки вместе с самой библиотекой.

Решение:

  1. В eclipse устанавливаем плагин m2eclipse (Maven 2 for eclipse).
  2. Учимся как им пользоваться на сайте. Все представлено в наборе видюшек, очень удобно и понятно.
  3. Создаем maven проект (в Project explorer -> Create Maven Project). Назовем его ektrop-assembled (group id, artifact id).
  4. В зависимостях добавляем org.ektorp
  5. Настраиваем pom.xml. Здесь мы добавляем общедоступный плагин для сборки проекта (maven-assembly-plugin). Настраиваем его на сборку проекта в один файл и чтобы при запуске этапа package этот плагин делал свою работу. Конечное содержимое файла pom.xml:
    <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>ektorp-assembled</groupId>
      <artifactId>ektorp-assembled</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <build>
      	<plugins>
      		<plugin>
      			<groupId>org.apache.maven.plugins</groupId>
      			<artifactId>maven-assembly-plugin</artifactId>
      			<version>2.2.1</version>
      			<configuration>
    	          <descriptorRefs>
    	            <descriptorRef>jar-with-dependencies</descriptorRef>
    	          </descriptorRefs>
    	        </configuration>
    	        <executions>
    	          <execution>
    	            <id>make-assembly</id> <!-- this is used for inheritance merges -->
    	            <phase>package</phase> <!-- bind to the packaging phase -->
    	            <goals>
    	              <goal>single</goal>
    	            </goals>
    	          </execution>
    	        </executions>
      		</plugin>
      	</plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>org.ektorp</groupId>
          <artifactId>org.ektorp</artifactId>
          <version>1.1.1</version>
          <scope>compile</scope>
        </dependency>
      </dependencies>
    </project>
    
  6. В eclipse выбираем Run as..->Maven package
  7. После всех процедур в папке проекта target появляется файл ektrop-assembled-0.0.1-SNAPSHOT-jar-with-dependencies.jar – это и есть необходимый файл с основной библиотекой и всеми её зависимостями.
  8. Полученный jar копируем в любой проект и подключаем в Build path.