如何在编译之前运行等效的mvn install:install-file

时间:2012-08-22 18:43:54

标签: java maven

如何在编译阶段之前运行等效的mvn install:install-file。我们在lib/foo-1.0.0.jar下有一个文件,该文件不存在于Maven仓库中。所以我们使用mvn install:install-file手动安装它,并在编译阶段将其作为依赖项。但是,如果文件未安装在本地存储库中,则会因编译错误而失败。如何指示maven在编译之前自动安装

2 个答案:

答案 0 :(得分:2)

使用系统依赖范围

<dependency>
  <groupId>com.company.groupId</groupId>
  <artifactId>foo</artifactId>
  <version>1.0.0</version>
  <scope>system</scope>
  <systemPath>${basedir}/lib/foo-1.0.0.jar</systemPath>
</dependency> 

${basedir} - 是您pom.xml的目录 的修改
您也可以使用build-helper-maven-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>${basedir}/lib/foo-1.0.0.jar</file>
                  <type>jar</type>
                  <classifier>optional</classifier>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
      </plugin>

答案 1 :(得分:1)

安装公司范围的Maven代理,例如Nexus,并将工件放在那里。每个开发人员都需要更改其settings.xml以指向该代理。将jar检查到版本控制通常是个坏主意,特别是如果你想转移到分布式SCM。