maven pom 配置,将依赖包打入

本文详细介绍了HTTP客户端项目的Maven配置,包括资源管理、编译参数设置、依赖插件使用,以及如何进行依赖复制、编译和打包操作。
部署运行你感兴趣的模型镜像

 

 

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ytxt</groupId>
  <artifactId>httpclient</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>httpclient</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <build>
  	    <resources>
  	    	<resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                    <exclude>log4j.xml</exclude>
                    <exclude>**/.svn/*</exclude>
                </excludes>
            </resource>
  	    </resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
							<overWriteReleases>false</overWriteReleases>
							<overWriteSnapshots>false</overWriteSnapshots>
							<overWriteIfNewer>true</overWriteIfNewer>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>GBK</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.2</version>
			</plugin>
			<plugin>
				<artifactId>maven-shade-plugin</artifactId>
				<version>1.3.3</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<artifactSet>
								<includes>
									<include>org.apache*</include>
									<include>commons*</include>
									<include>log4j*</include>
								</includes>
							</artifactSet>
							<!-- 打包 -->
							<relocations>
								<relocation>
									<pattern>org.apache</pattern>
									<shadedPattern>com.ytxt.apache</shadedPattern>
								</relocation>
								<relocation>
									<pattern>commons</pattern>
									<shadedPattern>com.ytxt.apache</shadedPattern>
								</relocation>
								
								<relocation>
									<pattern>log4j</pattern>
									<shadedPattern>com.ytxt.apache</shadedPattern>
								</relocation>
								
							</relocations>
						</configuration>
					</execution>
				</executions>
			</plugin>
		   </plugins>
	</build>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!--  
    <dependency>
		<groupId>commons-httpclient</groupId>
		<artifactId>commons-httpclient</artifactId>
		<version>3.1</version>
	</dependency>
	-->
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpclient</artifactId>
		<version>4.1.2</version>
	</dependency>
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
	</dependency>
	<dependency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.4</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.14</version>
	</dependency>
  </dependencies>
</project>

您可能感兴趣的与本文相关的镜像

<think> 首先,用户在询问如何使用Maven将webapp项目打jar。根据系统指令,我需要用中文回答,结构清晰,逐步解决问题。 回顾引用: - 引用[1]:描述如何打Maven项目为jar并导入其他项目。提到了使用`mvn install`将jar放入本地仓库,然后在pom.xml中添加依赖。 - 引用[2]:讨论在Maven Web项目中引入本地jar的问题,特别是打时缺失jar导致异常。 - 引用[3]:提到将webapp下的classes打到单独的jar中,配置将class文件放入WEB-INF/lib下的jar。 用户明确说:“我想查找使用Maven将webapp项目打jar的方法”,所以焦点是将webapp项目打jar。 关键点: - Webapp项目通常打成war文件,因为它们是Web应用程序。 - 用户想打jar,这可能适用于特定场景,比如将项目作为库使用。 从引用[3]看,它提到了配置将class文件打jar中,而不是默认的WEB-INF/classes。这暗示可以通过配置pom.xml来改变打行为。 在标准Maven中: - 对于webapp项目,使用`<packaging>war</packaging>`。 - 要打jar,可能需要更改packaging类型或使用插件。 步骤: 1. **更改pom.xml中的packaging类型**:将`<packaging>war</packaging>`改为`<packaging>jar</packaging>`。 2. **使用Maven插件**:如果项目有webapp资源,简单地更改packaging可能不够。需要配置Maven War Plugin或类似的东西来处理资源。 3. **处理依赖和资源**:确保所有依赖正确打,资源如JSP文件被含。 从引用[3],它说:“使用如下的配置:”,但引用中没有给出具体配置。我需要基于知识推断。 标准方法: - 如果项目是纯Java库,设置<packaging>jar</packaging>。 - 对于webapp想作为jar,可能意味着创建一个可执行jar或库jar。 - 常见方法是使用Maven Assembly Plugin或Spring Boot Maven Plugin(如果是Spring Boot应用)。 但用户提到“webapp项目”,所以可能不是Spring Boot。 基于引用: - 引用[1]展示了打jar的基本方法:`mvn install`。 - 引用[3]暗示可以通过配置pom.xml来打classes到jar。 具体步骤: 1. **修改pom.xml**: - 设置packaging为jar。 - 如果需要含webapp资源(如WEB-INF/web.xml, JSP等),可能需要配置插件。 2. **添加Maven Jar Plugin或War Plugin配置**。 3. **运行Maven命令**:如`mvn clean package`。 示例配置: 从引用[3]的上下文,它提到了将classes打jar,所以可能添加类似: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <archiveClasses>true</archiveClasses> <webResources> <!-- 配置资源 --> </webResources> </configuration> </plugin> </plugins> </build> ``` 但`<archiveClasses>`是maven-war-plugin的选项,用于将classes打jar文件中。 标准方法是: - 使用maven-war-plugin设置`<archiveClasses>true</archiveClasses>`来创建一个含classes的jar。 - 或者,完全改为jar。 为了清晰,我应该提供简单的方法。 回答结构: - 解释标准情况:webapp通常打为war。 - 提供打jar的方法: a. 更改packaging为jar。 b. 配置插件处理资源。 - 给出示例pom.xml片段。 - 提及命令:`mvn clean package`。 - 警告:如果项目有web特定资源,打jar可能不适用,除非作为库。 生成相关问题: - 根据系统指令,回答后添加相关问题。 使用引用: - 引用[1]关于打jar的基本方法。 - 引用[3]关于配置classes。 - 引用[2]关于依赖问题,但可能不直接相关。 在回答中自然地添加引用标识,如[^1]。 完整回答: 1. 介绍。 2. 步骤。 3. 示例配置。 4. 命令。 5. 相关问题。 </think> 根据您的查询,我将详细介绍如何使用 Maven 将 Webapp 项目打JAR 。Webapp 项目通常默认打为 WAR 文件(用于 Web 部署),但通过修改 Maven 配置,可以将其转换为 JAR ,适用于库依赖或独立应用场景。以下是逐步指南,基于标准 Maven 流程和最佳实践,确保可靠实现。 ### 步骤 1: 修改项目 POM.XML 文件 首先,需要更改项目的打类型并配置插件。在您的 Webapp 项目的 `pom.xml` 文件中进行以下修改: - **更改打类型**:将默认的 WAR 打改为 JAR。 - **添加 Maven 插件**:使用 `maven-war-plugin` 或 `maven-jar-plugin` 处理资源文件(如 JSP、HTML 或 WEB-INF 内容),确保它们被正确含在 JAR 中。 示例 `pom.xml` 配置片段: ```xml <project> <!-- 其他配置省略 --> <packaging>jar</packaging> <!-- 关键:将 war 改为 jar --> <build> <plugins> <!-- 使用 Maven War Plugin 打 classes 和资源到 JAR --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <!-- 推荐版本 --> <configuration> <archiveClasses>true</archiveClasses> <!-- 强制将 classes 打JAR --> <webResources> <!-- 含 webapp 目录下的资源 --> <resource> <directory>src/main/webapp</directory> <includes> <include>**/*.jsp</include> <include>**/*.html</include> <include>WEB-INF/**</include> <!-- 如 web.xml --> </includes> </resource> </webResources> </configuration> </plugin> <!-- 可选:添加 Maven Assembly Plugin 生成可执行 JAR --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> <!-- 依赖 --> </descriptorRefs> <archive> <manifest> <mainClass>com.example.MainClass</mainClass> <!-- 指定主类 --> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> ``` **说明**: - `<packaging>jar</packaging>`:核心更改,使 Maven 生成 JAR 而非 WAR。 - `<archiveClasses>true</archiveClasses>`:确保编译后的 classes 文件被打JAR 中,避免运行时类缺失问题[^3]。 - 如果项目依赖本地 JAR 或外部库,需在 `<dependencies>` 部分声明,否则打时可能报错(参考引用[2]关于依赖处理的提示)。 ### 步骤 2: 运行 Maven命令 在项目根目录下执行 Maven 命令: ```bash mvn clean package ``` - **输出位置**:生成JAR 默认位于 `target/` 目录下,文件名为 `{project-name}-{version}.jar`。 - **验证**:检查 JAR 内容,确保含 `WEB-INF/classes` 或资源文件: ```bash jar tf target/your-project-1.0.jar ``` ### 步骤 3: 处理常见问题 - **依赖缺失**:如果打后运行时出现 `ClassNotFoundException`,添加 `maven-assembly-plugin` 含所有依赖(见步骤 1 示例),或确保依赖在本地仓库中(使用 `mvn install` 安装本地项目到仓库)[^1]。 - **资源路径错误**:Webapp 资源(如 JSP)在 JAR 中可能路径不同,需在代码中调整路径(例如,使用 `ClassLoader.getResource()`)。 - **打优化**:对于大型项目,考虑分模块打,将核心逻辑作为 JAR,Web 部分作为 WAR,减少冗余。 ### 注意事项 - **适用场景**:此方法适合将 Webapp 作为库(例如,供其他 Maven 项目依赖)或构建可执行 JAR。但标准 Web 部署仍推荐使用 WAR。 - **性能影响**:打JAR 可能增加启动时间,建议仅在必要时使用。 - 更多配置参考 Maven 官方文档或引用资源[^3]。 通过以上步骤,您可以高效地将 Webapp 项目转换为 JAR ,并集成到其他项目中[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值