Почему компиляция Maven не работает с типом упаковки "pom" - PullRequest
5 голосов
/ 16 августа 2011

Я не знаю, почему моя сборка maven не генерирует цели / классы в текущей настройке pom, тип упаковки должен быть "pom" в моем случае, пожалуйста, сообщите, что не так ... Спасибо!

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abc.sm.doctor</groupId>
<artifactId>smdoctor</artifactId>
<packaging>pom</packaging>
<version>${SMDOCTOR_VERSION}</version>
<name>sm doctor</name>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
    <plugins>   
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
                <debug>true</debug>
                <debuglevel>source,lines</debuglevel>
                <showDeprecation>true</showDeprecation>
                <archive>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>         
                <finalName>smdoctor</finalName> 
                <descriptors>
                    <descriptor>dist.xml</descriptor>
                    <descriptor>zip.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>attach-artifacts</id>
        <phase>package</phase>
        <goals>
          <goal>attach-artifact</goal>
        </goals>
        <configuration>
          <artifacts>
            <artifact>
              <file>target/smdoctor.zip</file>
              <type>zip</type>
            </artifact>
          </artifacts>
        </configuration>
      </execution>
    </executions>
  </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>...</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <version>2.3.1</version>
        </plugin>
    </plugins>
</build>
<dependencies>
    ... 
     </dependencies>

Ответы [ 3 ]

7 голосов
/ 16 августа 2011

Установив тип упаковки на pom, вы указываете, что ничего не должно компилироваться.Может быть, pom не подходит ли этот тип упаковки для этого артефакта?Похоже, ваш скрипт будет работать нормально как jar.

5 голосов
/ 16 августа 2011

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

<executions>
    <execution>
        <id>compile</id>
        <phase>compile</phase>
        <goals>
             <goal>compile</goal>
        </goals>
    </execution>
</executions>

Если ваши исходники находятся в папке, отличной от src / main / java, вам нужно будет настроить эту папку в сборкераздел вашего пом:

<build>
    <sourceDirectory>${basedir}/path/to/sources</sourceDirectory>
    <!-- plugins and other configuration -->
</build>
1 голос
/ 12 сентября 2013
Пакет

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

Эта упаковка логична, а не реальна, поэтому вам не следует размещать какой-либо реальный код или ресурсы на этом уровне. Если вы используете junit, скажем, в 5 дочерних модулях, вместо того, чтобы определять зависимость в 5 pom-файлах, вы можете просто сделать это в родительском pom с упаковкой pom, и вы все равно можете указать конкретную версию в своем модуле, если вы хотите переопределить то, что в родительском пом. Когда вы запускаете родительский pom, выполнение pom начинается с родительского до дочернего, а затем все зависимости извлекаются сверху вниз.

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

...