我使用 Maven ,我想用包装 ear 进行构建,我想添加范围系统的依赖关系指定jar的 systemPath ,如下所示:
<dependency>
<groupId>group1</groupId>
<artifactId>group1</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>D:\Buildear\Jars\file.jar</systemPath>
</dependency>
但我没有在我的耳朵里发现这个罐子!!!
请帮助。
答案 0 :(得分:3)
我和Maven一起工作,我想用包装耳做一个构建,我想添加一个范围为
system
(...)的依赖项。但我没有在我的耳朵里找到那个罐子!!!
是的,这就是当(ab)使用system
作用域依赖时所得到的结果,该依赖应该始终可用按照定义。我多次写过这篇文章,例如我在下面引用的previous answer:
我已经写过many,many, really many次 这里有SO和99%的情况,
system
范围内的依赖关系应该是 避免。我会重复一下 Dependency Scopes迷你指南说 再来一次:
system
:您的某些阶段需要此依赖关系 项目的生命周期,但是 系统专用。 使用此范围 气馁:这被认为是一个 “先进”的功能和应该 只有在你真正理解的时候才能使用 其使用的所有后果, 如果没有,这可能会非常困难 实际上无法量化。 根据定义,此范围呈现您的 构建非便携式。它可能是 某些边缘情况下必要的。该 系统范围包括 指向的<systemPath>
元素 这个的实际位置 对本地机器的依赖。它是 因此用于指代一些神器 预计将出现在给定的 本地机器不在存储库中; 并且其路径可能会有所不同 机器到机器。 systemPath 元素可以指环境 路径中的变量:${JAVA_HOME}
例如。所以,而不是使用
system
范围,或者:
- 通过
install:install-file
将您的库添加到本地存储库。 这是一种快速而肮脏的方式 工作的东西,它可能是一个选择 如果你是孤独的,但它会使你的 构建非便携式。- 安装并运行“企业存储库”,如Nexus,Archiva或 Artifactory并通过添加您的库
deploy:deploy-file
。这是 理想情景。- 按照this previous answer中的说明设置基于文件的存储库 并把你的库放在那里。这个 如果你是最好的妥协 没有公司存储库但是 需要团队合作而不想要 牺牲便携性。
请停止使用
system
范围。
答案 1 :(得分:0)
<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>
<parent>
<artifactId>aaa</artifactId>
<groupId>aaa</groupId>
<version>1.0</version>
</parent>
<groupId>aaa</groupId>
<artifactId>aaa</artifactId>
<version></version>
<packaging>ear</packaging>
<name>aaa - Ear</name>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>aaa-ejb</artifactId>
<version>${project.version}</version>
<type>ejb</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>aaa-webapp</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jboss</groupId>
<artifactId>jboss-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jboss</groupId>
<artifactId>jbosssx</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>${aaa.name}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<generateApplicationXml>false</generateApplicationXml>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<ejbModule>
<groupId>${project.groupId}</groupId>
<artifactId>aaa-ejb</artifactId>
</ejbModule>
<jarModule>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<excluded>true</excluded>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<aaa.name>aaa-batch</aaa.name>
</properties>
这会创建一个耳朵并将库复制到耳中的lib文件夹中。