新机器上的Maven配置

时间:2015-12-03 18:21:21

标签: maven pom.xml

我在一个小实验室工作,我们有两台机器用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抱怨maven“无法导入maven项目:请参阅日志了解详细信息”(不确定日志在哪里:/)

当我cd进入../pom.xml并运行mvn install时,它会吐出

  

[INFO]扫描项目......
  [ERROR] [ERROR]处理POM时遇到一些问题:
  [致命] ca.virology不可解析的父POM:gatu:1.0-SNAPSHOT:未能找到ca.virology:病毒学 - 父:pom:https://repo.maven.apache.org/maven2中的1.0被缓存在本地存储库中,分辨率将不会重新尝试,直到中心的更新间隔已经过去或强制更新并且'parent.relativePath'指向错误的本地POM @第7行,第13列    @
  [错误]构建无法读取1个项目 - &gt; [帮助1]
  [ERROR]
  [错误]项目ca.virology:gatu:1.0-SNAPSHOT(/Users/chadsmit/Desktop/Developement/repo/gatu/pom.xml)有1个错误
  [错误] ca.virology的不可解析的父POM:gatu:1.0-SNAPSHOT:未能找到ca.virology:病毒学 - 父:pom:https://repo.maven.apache.org/maven2中的1.0被缓存在本地存储库中,分辨率将不会重新尝试直到中心的更新间隔已经过去或强制更新并且'parent.relativePath'指向错误的本地POM @第7行,第13列 - &gt; [帮助2]
  [ERROR]
  [错误]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven   [ERROR]使用-X开关重新运行Maven以启用完整的调试日志记录   [ERROR]
  [错误]有关错误和可能的解决方案的更多信息,请阅读以下文章:
  [错误] [帮助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仍然试图从其他地方下载它:

  

[致命] ca.virology的不可解析的父POM:gatu:1.0-SNAPSHOT:未能找到ca.virology:病毒学 - 父:pom:https://repo.maven.apache.org&gt; / maven2中的1.0被缓存在本地存储库,在中心的更新间隔过去或强制更新并且'parent.relativePath'指向错误的本地POM @第7行,第13列

之前,不会重新尝试解析

任何见解?我觉得我错过了一些重要的事情

3 个答案:

答案 0 :(得分:2)

您是否在第3台计算机上进行了新的maven安装,或者您从前两台计算机上复制了maven文件夹。如果您安装的是新版本,则还需要查看以前计算机上.m2文件夹中的settings.xml文件。在这些机器上的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设置。

答案 1 :(得分:1)

  1. 从项目文件夹中运行mvn clean install
  2. 只需检查一下您的svn没有更改第7行virology-parent上指定的父级版本,而是在模块版本中尝试类似${project.version}的内容

答案 2 :(得分:1)

如果您在本地拥有jar个文件,则might be able to [已编辑]

  

尝试从项目网站手动下载文件。

     

然后,使用以下命令安装它:

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

(你试过-offline切换到maven吗?)