Maven pom.xml添加jar文件,坐标值该怎么写?

一、[b]坐标[/b]是Maven最基本的概念,Maven的很多其他核心机制都依赖于坐标,其中最显著的就是仓库和依赖管理。对于仓库来说,有了坐标就知道在什么位置存储构件的内容。

例如junit:junit:4.8.2 就对应仓库中的路径/junit/junit/4.8.2/junit-4.8.2.pom和/junit/junit/4.8.2/junit-4.8.2.jar。这里第一个junit是groupId,第二个junit是artifactId,4.8.2是version。


二、[b]问题[/b]:对于初学者或刚使用maven的技术人员来说,若想在pom.xml中添加一个包依赖,groupId和artifactId 坐标该怎么写,都是无从下手,甚至随便写一个,这样,在保存pom.xml时,maven会自动的从中央仓库下载对应的jar文件,结果都是下载失败,根本下载不下来,原因很简单,因为根据你所写的坐标(groupId,artifactId,version),根本找不到对应的jar文件。这个问题,想了很久,终于找到解决方法了。

三、[b]查找正确的jar文件坐标[/b]

如:项目中需要添加XmlSchema-1.4.3.jar
步骤:1、访问maven中央仓库:http://mvnrepository.com(或者访问:http://grepcode.com/) 在搜索框中输入XmlSchema 结果会显示,jar文件对应的具体坐标
2、将坐标,配置到pom.xml即可,这时,maven会成功下载对应的jar.

搜索结果:
Maven-Central / org.apache.ws.commons.schema / XmlSchema / [1.4.6] 1.4.7 [SNASHOT - 1.4.7]

org.apache.ws.commons.schema 对应的是groupId
XmlSchema 对应的是artifactId
1.4.7 对应的是版本号version


<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>

若随便写成:
<dependency>
<groupId>org.apache.ws</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>
则maven 是下载不成功的。


四、[b]配置完对应的坐标后,部署项目时,会莫名其妙的出现一些其他的jar文件,这些并没有在pom.xml中配置,从哪来的呢?怎么去掉呢?[/b]
[b]方法一:[/b] 部署完后,在对应服务器项目中手动删除(如:tomcat),这个特麻烦,每次部署都要删除。若多出的jar,对项目启动没有影响,则可以不删除,若对项目启动报错,则必须删除。

[b]方法二:[/b] 第一、在pom.xml中,找出由哪个jar文件加载时,关联出来多余的jar文件。第二、修改pom.xml。

修改前:(neethi-3.0.1.jar中会关联出woodstox-core-asl-4.0.8.jar,需要打开neethi.jar就知道了,添加节点<exclusions> 写上具体需要过虑的jar,指定groupId,artifactId即可)
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
</dependency>

修改后:
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.0.8</version>
</exclusion>
</exclusions>
</dependency>

这时,项目部署后,woodstox-core-asl-4.0.8.jar,将不会出现了。



五、[b]父项目与子项目,配置jar依赖关系[/b]
1、父项目,主要是配置全局的jar,指定对应的版本号。
2、子项目,若需要使用jar文件,则只要指定groupId/artifactId即可。不需要写版本号。减少jar冲突的可能。

五、希望对你们有帮助,若有不明白的地方,可以随时QQ联系 251693481
<think>好的,用户想了解Mavenpom.xml文件的标准格式及配置说明。首先,我需要回忆一下Maven的基本结构和POM文件的关键元素。记得POM是Project Object Model的缩,它是Maven项目的核心配置文件,用XML格式编。 首先,我应该从POM的基本结构开始,包括根元素<project>和必需的groupId、artifactId、version,也就是GAV坐标。这部分是每个POM文件都必须包含的,用来唯一标识项目。比如用户提供的引用[1]中提到的groupId:artifactId:version结构,还有packaging类型,默认是jar,也可以是war、pom等。 接下来需要介绍POMXML命名空间和模式定义,通常在<project>标签中会有xmlns和xsi:schemaLocation属性,这些定义了XML的命名空间和模式位置,确保文件结构的正确性。例如用户引用[1]中的示例代码里就有这些属性。 然后,packaging元素很重要,它决定了项目的打包类型。用户提供的引用[1]和[2]都提到了packaging类型,特别是当类型为pom时,项目可以作为父模块管理其他子模块,这时候通常会删除src目录,因为不需要业务代码,如引用[2]所述。 接下来是模块化配置,当项目有子模块时,会用<modules>来列出子模块的目录,这在多模块项目中很常见。比如在父POM中配置<modules>来包含各个子项目。 依赖管理部分也是重点,包括<dependencies>和<dependencyManagement>的区别。直接依赖放在<dependencies>中,而<dependencyManagement>用于统一管理版本,子模块可以继承版本号而不需要重复指定。用户引用[3]提到import范围依赖需要配合type为pom使用,这部分可能需要在dependencyManagement中配置。 构建配置部分,比如<build>中的插件和资源管理,比如编译插件、打包插件等,这些会影响构建过程。需要提到常用的插件如maven-compiler-plugin,以及如何配置资源目录。 属性定义部分,<properties>可以用来集中定义版本号等属性,便于统一管理和维护,比如定义<junit.version>这样的属性,然后在依赖中引用。 仓库配置,可能涉及<repositories>和<pluginRepositories>,不过一般项目可能不需要特别配置,除非有私有仓库或特殊依赖源。 最后,需要给出一个完整的POM示例,将上述各部分整合起来,让用户更直观地看到结构。同时,根据用户提供的引用内容,确保覆盖到packaging类型为pom时的管理功能,以及依赖范围import的使用条件。 生成相关问题的时候,要围绕用户可能进一步想了解的内容,比如依赖管理机制、多模块项目配置、打包类型区别以及常见插件使用等。这样可以帮助用户深入理解POM文件的不同方面。</think>### Maven pom.xml 文件标准格式及配置说明 Maven 的 `pom.xml` 是项目的核心配置文件,遵循 XML 格式,主要包含以下核心元素和配置规则: --- #### 1. **基础结构** ```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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 项目唯一标识 --> <groupId>com.example</groupId> <artifactId>demo-project</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <!-- 默认为 jar --> </project> ``` - **必需元素**:`groupId`(组织标识)、`artifactId`(项目标识)、`version`(版本号)[^1]。 - **`packaging`**:定义打包类型,如 `jar`、`war`、`pom`(用于多模块管理)[^2]。 --- #### 2. **模块化配置** ```xml <modules> <module>sub-module1</module> <module>sub-module2</module> </modules> ``` - **`<modules>`**:用于多模块项目,列出子模块目录名称。 --- #### 3. **依赖管理** ```xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.18</version> </dependency> </dependencies> </dependencyManagement> ``` - **`<dependencies>`**:直接声明项目依赖。 - **`<dependencyManagement>`**:统一管理依赖版本,子模块可继承[^3]。 - **`<scope>`**:依赖作用域(如 `compile`、`test`、`import`)[^3]。 --- #### 4. **构建配置** ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> ``` - **`<plugins>`**:配置构建插件(如编译、打包)。 - **`<resources>`**:定义资源文件目录及过滤规则。 --- #### 5. **属性定义** ```xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>4.13.2</junit.version> </properties> ``` - **`<properties>`**:集中定义版本号、编码格式等全局变量。 --- #### 6. **仓库配置** ```xml <repositories> <repository> <id>my-repo</id> <url>https://repo.example.com</url> </repository> </repositories> ``` - **`<repositories>`**:自定义依赖仓库地址。 --- #### 完整示例 ```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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <properties> <junit.version>4.13.2</junit.version> </properties> </project> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值