我创建了一个Maven项目,其中有一些依赖于库(.jar文件)的Maven项目,它们不在Maven中心。我们拥有的内部存储库正在脱机,并且我们还没有被授权创建新的存储库,所以我修改了POM,以便在激活某个配置文件时在每个文件上使用install:install-file
。它似乎在我的机器上工作,但它可能无法工作,因为.jars已经在我的存储库中。Maven安装:安装文件似乎不起作用
本周我们有一名新员工开始工作,我试图通过触发配置文件来帮助他安装依赖关系,虽然调试跟踪将这些目标列为计划(并且mvn help:active-profiles
显示正在激活的配置文件),但是,它不起作用。这些目录是在存储库中创建的,但只创建了一个用于.jar和.pom的.lastupdated
文件。
我们得到的错误是POM找不到给定的工件。这是预料之中的,因为我们在插件的执行中使用<generatePom>true</generatePom>
。
任何想法,为什么这可能无法正常工作?
这里的POM的相关章节:
<profiles>
<profile>
<id>self-contained</id>
<activation>
<property>
<name>installBundledJars</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>installCaseControlUpdateAPI</id>
<phase>generate-resources</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/CaseControlUpdateAPI.jar</file>
<groupId>com.west.thomson.contech</groupId>
<artifactId>CaseControlUpdateAPI</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>installMQ</id>
<phase>generate-resources</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/com.ibm.mq-5.304.jar</file>
<groupId>com.ibm</groupId>
<artifactId>mq</artifactId>
<version>5.304</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>installMQJMS</id>
<phase>generate-resources</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/com.ibm.mqjms-5.304.jar</file>
<groupId>com.ibm</groupId>
<artifactId>mqjms</artifactId>
<version>5.304</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>installJADABAS</id>
<phase>generate-resources</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/jadabas.jar</file>
<groupId>com.softwareag</groupId>
<artifactId>jadabas</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>installOJDBC</id>
<phase>generate-resources</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/ojdbc14.jar</file>
<groupId>oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10g</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
您可以重命名您的本地存储库并重新测试安装以查看它是否可用,但您需要远程存储库来下载maven插件等。此外,如果远程存储库已脱机,则无法工作,您必须告诉你的管理层/老板,每个人都应该改变它的责任。以这种方式工作是没有意义的。 – khmarbaise
对不起,我应该更清楚。我们对我们的大部分插件使用maven central,并且工作正常。这个项目是在知道内部存储库已脱机的情况下创建的,所以我们没有在我们的POM中指定它(这完全是有意的)。我们试图使用'install:install-file'作为解决方法,因为我们确实有可用的.jar文件。 –
最简单的解决方案是设置像Nexus,Artifactory之类的回购管理器或任何可以消除这些问题的东西。但是这当然不能回答你的问题。 – khmarbaise