[英]Non maven jar dependencies giving error in pom.xml maven
我想在我的Maven项目中安装一些非Maven Jar。
步骤1:在打包前的阶段,我使用maven-antrun-plugin
使用ant生成非maven项目的jar(因为非maven项目基于Ant)。
步骤2:然后在打包阶段使用maven-install-plugin
将maven-install-plugin
安装到本地存储库
步骤3:在安装阶段的战争中,我还使用maven-war-plugin
将所有软件包打包
另外,我还在pom.xml中将所有非maven项目添加为依赖项。在我的项目上运行mvn-install时,pom给出了一个错误: Missing artifact for non maven jars
。 The POM for com.non_maven:com.non_maven:jar:version is missing, no dependency information available
如果运行软件包阶段,则仅将非Maven jar安装在存储库中。 但是似乎Maven希望存储库中已经存在所有依赖项。 我可以通过在maven存储库中分别安装非maven jar,然后运行pom.xml来创建战争来解决此问题。 但是我想使用单个pom执行这些步骤。 我该如何实现? 谢谢
pom.xml
<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>
<groupId>com.swte.sca</groupId>
<artifactId>MyProject</artifactId>
<packaging>war</packaging>
<version>1.1.19</version>
<name>MyProject</name>
<build>
<finalName>MyProject</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>common-jar</id>
<phase>package</phase>
<configuration>
<repositoryLayout>default</repositoryLayout>
<groupId>com.non_maven</groupId>
<artifactId>com.non_maven</artifactId>
<version>${version}</version>
<file>F:/addressMaven</file>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>copy-war-file</id>
<phase>prepare-package</phase>
<configuration>
<target name="display">
<ant antfile="src/main/ant/build.xml"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<outputDirectory>F:\Folder\APP</outputDirectory>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>F:/addressMaven</directory>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.swte.ojdbc7</groupId>
<artifactId>com.swte.ojdbc7</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>com.non_maven</groupId>
<artifactId>com.non_maven</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
从您的pom中,我可以看到您没有使用模块。 https://maven.apache.org/guides/mini/guide-multiple-modules.html
我已经看到模块解决了类似的问题。
您可以按原样保留主pom,然后使用子pom在专用模块中提取特定的构建步骤。
<version>1.1.19</version>
<name>MyProject</name>
<modules>
<module>child-module</module>
</modules>
<build>
在文件夹/ child-module中,创建一个类似于父代的pom:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.swte.sca</groupId>
<artifactId>MyProject</artifactId>
<version>1.1.19</version>
</parent>
<groupId>com.swte.sca</groupId>
<artifactId>non-maven-module</artifactId>
<version>1.0.0</version>
您可以在此处为模块编写构建步骤
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.