Конфигурация Maven на новой машине

Я работаю в небольшой лаборатории, у нас есть 2 машины с intellij, svn и maven для разработки. Мне было поручено настроить третью машину для разработки. Мне нужны инструкции, как это сделать. У меня svn checkout, все файлы и проект открыт в intellij:

--main: --java: --ca: --virology: --src: pom.xml

И мой pom.xml выглядит так:

<?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>

<parent>
    <groupId>ca.virology</groupId>
    <artifactId>virology-parent</artifactId>
    <version>1.0</version>
</parent>

<groupId>ca.virology</groupId>
<artifactId>gatu</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>ca.virology</groupId>
        <artifactId>virology-lib</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>ca.virology</groupId>
        <artifactId>base-by-base</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>ca.virology</groupId>
        <artifactId>vgo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>ca.virology</groupId>
        <artifactId>jdotter</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>ptolemy</groupId>
        <artifactId>ptolemy2</artifactId>
        <version>0</version>
    </dependency>
    <dependency>
        <groupId>ca.virology</groupId>
        <artifactId>virology-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>org.biojava</groupId>
        <artifactId>core</artifactId>
        <!--virology-lib used 1.4, 1.8.2 is most recent-->
        <version>1.8.2</version>
    </dependency>

    <!-- this is only in the local repository because the only available maven versions do not contain the classes we need-->
    <!-- use "mvn install:install-file -DgroupId=org.ggf.drmaa -DartifactId=drmaa -Dversion=0 -Dpackaging=jar -Dfile=/path/to/file.jar" to install the file to your local repository if necessary-->
    <dependency>
        <groupId>org.ggf.drmaa</groupId>
        <artifactId>drmaa</artifactId>
        <version>0</version>
    </dependency>

    <!-- this is only in the local repository because a maven version does not exist-->
    <!-- use "mvn install:install-file -DgroupId=javax.jnlp -DartifactId=jnlp -Dversion=0 -Dpackaging=jar -Dfile=/path/to/file.jar" to install the file to your local repository if necessary-->
    <dependency>
        <groupId>javax.jnlp</groupId>
        <artifactId>jnlp</artifactId>
        <version>0</version>
    </dependency>

    <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>2.0.2</version>
    </dependency>

    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.8.0</version>
    </dependency>

    <!-- this is only in the local repository because a maven version does not exist-->
    <!-- use "mvn install:install-file -DgroupId=pal -DartifactId=pal -Dversion=1.5 -Dpackaging=jar -Dfile=/path/to/file.jar" to install the file to your local repository if necessary-->
    <dependency>
        <groupId>pal</groupId>
        <artifactId>pal</artifactId>
        <version>1.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-apache-oro</artifactId>
        <version>1.9.2</version>
    </dependency>

    <!--Intellij GUI-->
    <dependency>
        <groupId>com.intellij</groupId>
        <artifactId>forms_rt</artifactId>
        <version>6.0.5</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>ca.virology.gatu.GenomeAnnotator</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Permissions>all-permissions</Permissions>
                        <Codebase>*</Codebase>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <minimizeJar>true</minimizeJar>
                        <filters>
                            <filter>
                                <artifact>xerces:xercesImpl</artifact>
                                <includes>
                                    <include>**</include>
                                </includes>
                            </filter>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

intellij complains about maven "Unable to import maven project: See logs for details" (not sure where log is either :/)

когда я cd в ../pom.xml и запускаю mvn install он выплевывает

[INFO] Поиск проектов ...
[ERROR] [ERROR] При обработке POM возникли некоторые проблемы:
[FATAL] Неразрешаемый родительский POM для ca.virology: gatu: 1.0-SNAPSHOT: Failure чтобы найти ca.virology: virology-parent: pom: 1.0 в https://repo.maven.apache.org/maven2 был кэширован в локальном репозитории, разрешение не будет повторяться до тех пор, пока не истечет интервал обновления центрального хранилища или пока обновления не будут выполнены принудительно, а 'parent.relativePath' укажет на неправильный локальный POM @ строка 7, столбец 13 @
[ОШИБКА] Сборка не смогла прочитать 1 проект -> [Справка 1]
[ОШИБКА]
[ОШИБКА] Проект ca.virology: gatu: 1.0-SNAPSHOT (/ Users / chadsmit / Desktop / Developement / repo / gatu / pom.xml) содержит 1 ошибку
[ERROR] Неразрешаемый родительский POM для ca.virology: gatu: 1.0-SNAPSHOT: не удалось найти ca.virology: virology-parent: pom: 1.0 в https://repo.maven.apache.org/maven2 был кэширован в локальном репозитории, разрешение не будет повторяться до тех пор, пока не истечет интервал обновления центрального хранилища или пока обновления не будут выполнены принудительно и 'parent.relativePath' указывает на неправильный локальный POM @ строка 7, столбец 13 -> [Справка 2] < br> [ERROR]
[ERROR] Чтобы увидеть полную трассировку стека ошибок, повторно запустите Maven с ключом -e.
[ERROR] Повторно запустите Maven, используя переключатель -X, чтобы включить полную отладку ведение журнала.
[ERROR]
[ERROR] Для получения дополнительной информации об ошибках и возможных решениях, пожалуйста, прочтите следующие статьи:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ОШИБКА] [Справка 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

Я предполагаю, что в папке .m2 отсутствуют определенные файлы .jar, но как мне сказать maven искать их там, если я скопирую их с другого компьютера?

РЕДАКТИРОВАТЬ: банки с новых машин были скопированы и, похоже, не вызывают проблем. В pom.xml были внесены следующие изменения:

<parent>
    <groupId>ca.virology</groupId>
    <artifactId>virology-parent</artifactId>
    <version>1.0</version>
    <relativePath>/Users/chadsmit/.m2/repository/ca/virology/virology-parent/1.0/virology-parent-1.0.pom</relativePath>
</parent>

и все же maven все еще пытается загрузить его откуда-то еще:

[FATAL] Неразрешимый родительский POM для ca.virology: gatu: 1.0-SNAPSHOT: не удалось найти ca.virology: virology-parent: pom: 1.0 в https://repo.maven.apache.org> / maven2 был кэширован в локальном репозитории, разрешение не будет повторяться до тех пор, пока не истечет интервал обновления центрального хранилища или пока обновления не будут выполнены принудительно и 'parent.relativePath' указывает на неправильный локальный POM @ строка 7, столбец 13

Есть идеи? я чувствую, что мне не хватает чего-то важного


person OrangePot    schedule 03.12.2015    source источник


Ответы (3)


Вы сделали новую установку maven на 3-м компьютере или скопировали папку maven с двух предыдущих машин. Если вы установили новую версию, вам также необходимо взглянуть на файл settings.xml в папке .m2 на предыдущих машинах. Возможно, репозитории, настроенные в файле settings.xml на этих машинах, отсутствуют в settings.xml на третьей машине.

Если ваш родительский проект не находится в локальном репозитории maven, вы также можете добавить relativePath в запись для родительского объекта следующим образом:

<parent>
  <groupId>com.test</groupId>
  <artifactId>test-artifact</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath>{path to}/test-artifact/pom.xml</relativePath>
 </parent>

Кроме того, вам необходимо проверить, указывает ли intellij на установку maven, которую вы скопировали с предыдущих компьютеров. Вполне возможно, что Intellij указывает на встроенную настройку maven.

person akki    schedule 03.12.2015
comment
Я установил maven clean (3.3.3) на новый компьютер, но он не сгенерировал файл settings.xml в .m2, поэтому я скопировал файл на новый компьютер. Содержимое файла, похоже, не указывает пути к «пользовательским» банкам, просто ссылки на maven.apache ... Означает ли это, что каждая машина имеет локальное репо на своем диске, содержащее банки? - person OrangePot; 03.12.2015
comment
Да, на каждой машине есть локальный репозиторий. - person akki; 03.12.2015
comment
Как указать maven для просмотра этих папок? Похоже, он пытается загрузить откуда-то еще .. Загрузка: repo.maven.apache.org/maven2/ca/virology/virology-parent/, которого явно там не будет - person OrangePot; 03.12.2015
comment
maven ищет файлы jar в локальном репозитории в папке .m2. Вы пробовали запустить mvn clean install из каталога проекта в командной строке после копирования файла settings.xml? - person akki; 03.12.2015
comment
Да, похоже, это не сработало (не удалось найти артефакт ca.virology: virology-parent: pom: 1.0 в центральном (repo.maven.apache.org/maven2)). В своем сообщении, как вы проверяете, что intellij указывает на установку maven, которую я скопировал с предыдущих машин? - person OrangePot; 03.12.2015
comment
Вы можете проверить установку maven в Intellij, перейдите в раздел «Настройки» ›› Сборка, выполнение, развертывание ›› Инструменты сборки ›› Maven. Проверьте домашний каталог maven, файл настроек пользователя и локальный репозиторий. Вы можете попробовать полностью скопировать папку .m2 со второго компьютера. Или, если он слишком большой, просто скопируйте отсутствующий файл jar и зарегистрируйте его в локальном репозитории с помощью команды: mvn install: install-file -Dfile = ‹path-to-file› -DgroupId = ‹group-id› \ - DartifactId = ‹artifact-id› -Dversion = ‹version› -Dpackaging = ‹packaging› - person akki; 04.12.2015

  1. Запустите mvn clean install из папки проекта.
  2. Просто проверьте, как только ваш svn не изменил версию родителя, указанного здесь в строке 7 virology-parent, вместо этого попробуйте что-то вроде ${project.version} в версии для модуля
person Naman    schedule 03.12.2015
comment
Та же ошибка, [INFO] Поиск проектов ... [ERROR] [ERROR] При обработке POM возникли некоторые проблемы: [FATAL] Неразрешаемый родительский POM для ca.virology: gatu: 1.0-SNAPSHOT: Не удалось найти ca .virology: virology-parent: pom: $ {project.version} в repo.maven.apache.org/ maven2 был кэширован в локальном репозитории, попытка разрешения не будет повторяться до тех пор, пока не истечет интервал обновления центрального хранилища или пока обновления не будут выполнены принудительно, а 'parent.relativePath' укажет на неправильный локальный POM @ строка 7, столбец 13 - person OrangePot; 03.12.2015
comment
не могли бы вы поделиться родительским помпом здесь - person Naman; 04.12.2015

Если у вас есть jar-файлы локально, вы можете [отредактировано ]

Попробуйте скачать файл вручную с сайта проекта.

Затем установите его с помощью команды:

mvn install:install-file -DgroupId=ca.virology -DartifactId=virology-parent \
      -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/file

(а вы пробовали -offline переключиться на maven?)

person serv-inc    schedule 03.12.2015