Сайт Maven в многомодульном проекте не может разрешить зависимость

Я хочу разделить свою работу по непрерывной интеграции (Hudson) на два этапа. (Поскольку время выполнения вместе со сборкой и созданием отчетов занимает слишком много времени.) В первом задании я успешно создаю свой многомодульный проект maven с "пакетом mvn". Затем я копирую свое рабочее пространство в другое место и пытаюсь снова собрать проект только с целью «сайт» и/или findbugs/checkstyle/pmd для создания отчетов. Но это не работает! Maven не может разрешить зависимость моих подмодулей. (Но все JAR-файлы доступны в его целевых папках.)

Пример: Моя структура выглядит так:

  • Parent
    • A
    • B
    • C
    • D

Проект C имеет в качестве зависимости проект B.

Когда я создаю все с помощью «mvn site», он генерирует для проектов A и B все отчеты. Но остановился на проекте C с сообщением об ошибке «Не удалось разрешить зависимости для проекта B». Но проект B уже собран с "пакетом mvn". т.е. Я могу найти файл JAR проекта B в его целевой папке.

Есть ли способ разрешить зависимость от подмодуля B без «установки mvn»? (Я не хочу делать это на своем ci-сервере. Я боюсь, что это может быть опасно для других заданий с той же кодовой базой.)

Обновление от 20.08.12:

POM корневой папки:

<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>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>parent</module>
    </modules>
</project>

Родительский POM:

<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>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>../bar-a</module>
        <module>../bar-b</module>
        <module>../bar-c</module>
        <module>../bar-d</module>
    </modules>
    [...]
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.5.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.7.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.9.1</version>            
                [...]
            </plugin>
        </plugins>
    </reporting>
</project>

ПОМ Б:

<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>
    <parent>
        <groupId>foo</groupId>
        <artifactId>parent</artifactId>
        <version>1.0</version>
        <relativePath>../parent</relativePath>
    </parent>
    <name>Bar B</name>
    <artifactId>bar-b</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>  
    [...]
</project>

ПОМ C:

<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>
    <parent>
        <groupId>foo</groupId>
        <artifactId>parent</artifactId>
        <version>1.0</version>
        <relativePath>../parent</relativePath>
    </parent>
    <name>Bar C</name>
    <artifactId>bar-c</artifactId>
    <packaging>jar</packaging>
    [...]
    <dependencies>
        <dependency>
            <groupId>foo</groupId>
            <artifactId>bar-b</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    [...]
</project>

person user1606528    schedule 17.08.2012    source источник
comment
Без pom трудно догадаться... но похоже, что зависимость/модуль настроен неправильно. mvn clean site должен работать без ошибок.   -  person khmarbaise    schedule 17.08.2012
comment
Пакет mvn clean также работает без ошибок?   -  person khmarbaise    schedule 18.08.2012
comment
да. Пакет mvn clean работает без ошибок. mvn чистый сайт нет. Я загружаю фрагмент кода позже.   -  person user1606528    schedule 20.08.2012
comment
Связанный: stackoverflow.com/questions/15222177/maven-reactor-and- сайт   -  person Frans    schedule 15.01.2015


Ответы (1)


Я столкнулся с той же проблемой «долгого времени».

Единственный способ (я думаю) решить эту проблему с помощью вашего способа работы - это установить mvn, как вы это предложили.

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

Так мы работаем, и этого вполне достаточно. Мы используем для этого jenkins, но я думаю, вы можете активировать его с каждым программным обеспечением CI)!

@hourly : mvn clean package (or install) --> from 1 to 5 minutes to run all test on all modules
@daily : mvn clean install site -->  from 15 to 35 minutes to run all test on all modules + doc + reports + PDF reports

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

person Jean-Rémy Revy    schedule 18.08.2012