`
wpf_0508
  • 浏览: 13343 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

maven把依赖包拷贝到lib下

阅读更多

maven把依赖包拷贝到lib下

 

标准web工程在eclipse中利用m2eclipse插件添加依赖管理后,在部署过程中没有将依赖的jar包自动拷贝到/WEB-INF/lib中。
参考了一些朋友的做法手动执行

  1. mvn dependency:copy-dependencies -DoutputDirectory=src/main/webapp/WEB-INF/lib  -DincludeScope=runtime   

命令将jar包拷贝到/WEB-INF/lib目录下。
这种做法固然可以,但是也会带来一些不便。
1、需要手动执行命令。
2、不能时时更新。


    以下列出网上查找到的解决方法,m2eclipse plugin方式已验证通过。
通过验证eclipse版本:eclipse-jee-helios-SR2-win32
m2eclipse插件地址:http://m2eclipse.sonatype.org/sites/m2e
标准web工程通过m2eclipse添加依赖管理步骤:
1、“Maven ” –> “Enable dependency Management“

2、Web Deployment Assembly中添加maven dependencies

步骤如下图:

工程 -> 右键 -> preferences

 

 

 

 


.classpath文件中会有修改

   

  1. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>  


  1. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">  
  2.         <attributes>  
  3.             <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>  
  4.         </attributes>  
  5.     </classpathentry>  


(执行“Maven ” –> “Update Project Configuration “未生效,故手动添加。必须deploy时候才会拷贝jar包到lib目录下,而非在更新maven依赖时候拷贝jar包。 )

以下为原文内容:

 

Eclipse : Web Deployment Assembly & Maven dependencies issue

Published: September 3, 2010 , Updated: September 3, 2010 , Author: mkyong

Problem

In Eclipse 3.5 or early version, in order to deployed the Maven dependencies to the correct “/WEB-INF/lib ” folder, you have to configure the dependencies via “Java EE Module Dependencies”, and the updated “.classpath ” file will look like following :

File : “.classpath”, by Java EE Module Dependencies…

 

  1. ...  
  2. <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"   
  3.    sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar">  
  4.    <attributes>  
  5.      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>  
  6.    </attributes>  
  7. </classpathentry>  
  8. ...  

Since Eclipse 3.6, the “Java EE Module Dependencies” is replaced by “Web Deployment Assembly”, but you can do the same via the “Referenced Projects Classpath Entries”, however, it will update the “.classpath ” file as following :

File : “.classpath”, by Web Deployment Assembly…

 

  1. ...  
  2. <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"   
  3.    sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar">  
  4.    <attributes>  
  5.      <attribute name="org.eclipse.jst.component.dependency" value="../"/>  
  6.    </attributes>  
  7. </classpathentry>  
  8. ...  

Sadly, the default (value=”../”) makes all the Maven’s dependencies failed to deploy.

Solution

Not a big issue, you still can modify the (value=”../”) to (value=”/WEB-INF/lib”) manually, but it will get override every time you run a Maven build. No worry, there are still have two solutions :

1. WTP Support

Ignore the “Referenced Projects Classpath Entries” settings, instead, make the Maven supports WTP 2.0

  1. mvn eclipse:eclipse -Dwtpversion=2.0  

It will generate a new file named “org.eclipse.wst.common.component “, under “settings ” folder, see a portion of this file :

File : “org.eclipse.wst.common.component”, by WTP

 

  1. ...  
  2. <dependent-module archiveName="jsp-api-2.1.jar" deploy-path="/WEB-INF/lib"   
  3.   handle="module:/classpath/var/M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar">  
  4.   <dependency-type>uses</dependency-type>  
  5. </dependent-module>  
  6. ...  

With WTP support, it helps to deploy the Maven dependencies to “/WEB-INF/lib ” folder correctly.

2. m2eclipse plugin

Install the m2eclipse , an Eclipse plugin to integrate Maven into the Eclipse IDE. After the installation, right click on the project folder, select “Maven ” –> “Update Project Configuration “, it will update the “.classpath ” file accordingly, see a snippet

File : “.classpath”, by m2eclipse

 

  1. ...  
  2. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">  
  3.   <attributes>  
  4.     <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>  
  5.   </attributes>  
  6. </classpathentry>  
  7. ...  

It helps to deploy the Maven dependencies correctly as well.

Reference

  1. http://m2eclipse.sonatype.org/
  2. http://www.mkyong.com/maven/maven-dependency-libraries-not-deploy-in-eclipse-ide/
  3. http://www.eclipse.org/forums/index.php?t=msg&goto=542963&
  4. http://www.eclipse.org/forums/index.php?t=msg&goto=543308&
  5. http://tux2323.blogspot.com/2010/06/review-eclipse-helios-rc4.html
分享到:
评论

相关推荐

    Maven引入本地Jar包并打包进War包中的方法

    例如,我们可以在项目根目录下创建文件夹lib,然后将四个Jar包(cpdetector、antlr、chardet和jargs)拷贝至该文件夹中。 配置pom.xml 在pom.xml文件中,我们需要配置依赖本地Jar包的信息。对于每个Jar包,我们...

    springboot用maven打包1

    为了解决这个问题,我们需要使用maven-dependency-plugin来拷贝依赖到指定的目录,通常是`lib`目录。 ```xml &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-dependency-plugin &lt;id&gt;copy-...

    Maven-教案-1.0.docx

    - `lib/`:Maven运行所需的依赖库 ##### 2. 环境变量配置 - **JDK**:确保安装JDK1.4以上版本,并将`JAVA_HOME/bin`添加到环境变量`path`中。 - **MAVEN_HOME**:配置Maven的主目录。 - **PATH**:将`%MAVEN_HOME%...

    maven项目引用外部jar包的方法

    在传统的Java Web项目中,我们可以通过将jar包拷贝到项目的类路径(例如Web应用的WEB-INF/lib目录)下,然后通过IDE(集成开发环境)的配置将其包含到项目中。然而,对于Maven项目,如果采用上述方式直接拷贝jar包到...

    Spring boot打包jar分离lib和resources方法实例

    3. maven-dependency-plugin:这个插件是用来拷贝依赖库的。 4. maven-assembly-plugin:这个插件可以说包含了以上插件的功能,但是可以做到更精细的控制。 5. spring-boot-maven-plugin:这个插件是 Spring Boot ...

    Activiti连接达梦数据库.pdf

    将达梦数据库驱动程序拷贝到项目的lib目录下,以便在后续步骤中使用。 5.2 将驱动程序打入Maven仓库 将达梦数据库驱动程序打入Maven仓库,以便在后续步骤中使用。 6. 修改ACTIVITY-ENGINE-5.22.0 修改Activiti的...

    Maven笔记.doc

    Maven 会把工程中依赖的构件(jar 包)从远程下载到本机的一个目录下管理,通常默认在 $user.home/.m2/repository 下; b. 自 Maven2 以后,构件的存储方式通常是 groupId/artifactId/version/*.jar c. 修改本地...

    JDK和Maven安装配置总结.docx

    - 将 Maven 的配置文件 `settings.xml` 拷贝到 `.m2` 目录下。 - 修改 `settings.xml` 文件中的本地仓库位置(localRepository),以便 Maven 下载和管理依赖。 ##### 3. 测试 Maven 是否安装成功 同样地,可以...

    通过pom批量下载jar到本地.zip

    这个命令会让Maven将所有依赖复制到`lib`目录下,而不是默认的本地仓库。这样可以方便地将依赖组织在一起,便于离线环境使用或者集成到其他流程中。 `lib`目录通常用于存放项目依赖的`jar`文件,当你运行`update....

    配置pom.xml用maven打包java工程的方法(推荐)

    2. 将所有jar文件复制到/lib目录,包括Maven依赖的jar包、lib目录下的jar包和编译后的jar包 3. 将启动脚本从工程根目录拷贝到/bin目录 4. 将所有配置文件从src/main/resources拷贝到/conf 在`&lt;build&gt;`节点下,我们...

    springboot 打包部署 共享依赖包(分布式开发集中式部署微服务)

    其中,maven-jar-plugin用于打包jar文件,maven-dependency-plugin用于拷贝依赖项到lib文件夹下。 知识点4:Maven 依赖项管理 在pom文件中,我们需要配置依赖项的管理。我们可以使用addClasspath元素来指定依赖项...

    SpringBoot瘦身打包部署的实现

    例如,执行mvn clean package命令,得到的Jar包目录结构如下:整个Jar包524MB(可以通过解压软件查看,会发现基本都是lib下的依赖包占用)。 三、解决方法 步骤1: 正常编译JAR包,解压出包,解压出lib文件夹 首先...

    达梦数据库迁移1

    具体来说,我们需要将驱动包添加到项目的lib文件夹下,然后在Maven配置中托管达梦数据库驱动包。 添加驱动包到本地 首先,我们需要在项目的根路径下新建lib文件夹,然后将驱动包放在该文件夹下。 使用Maven托管...

    详解SpringBoot迭代发布JAR瘦身配置

    除了spring-boot-maven-plugin插件外,我们还需要使用maven-dependency-plugin插件来将第三方的JAR包拷贝到lib文件夹中。该插件的配置主要包括两个部分:outputDirectory和excludeGroupIds。outputDirectory用于指定...

    memcached缓存数据库jar包

    在【描述】中提到的“将jar包拷贝到tomcat的lib下”,这是指将`memcached`的Java客户端库jar文件添加到Tomcat服务器的类路径中。Tomcat的`lib`目录是放置全局共享的JAR文件的地方,这些文件会被所有部署在Tomcat上的...

    connect-1.3.0-all-in-one

    # 拷贝lib目录下所有的jar包至Q项目WebRoot(或叫WebContent)/WEB-INF/lib下(servlet-api-2.5.jar如果容器已经包含就不必添加) ===在项目中添加Maven依赖=== &lt;code language="xml"&gt;&lt;dependency&gt;&lt;/code&gt; ...

    SpringBoot如何实现分离资源文件并打包

    Spring Boot 项目默认情况下会将所有资源文件、依赖包和可执行文件打包到一个单一的 JAR 文件中,但是有时候我们并不想让配置文件、依赖包和可执行文件混杂在一起。这时候可以通过在 pom.xml 文件中进行配置,从而...

    JPI-plugins.7z

    1. **artifactory.jpi**:Artifactory插件允许Jenkins与Artifactory仓库进行交互,支持自动化构建过程中的软件包管理和部署,包括Maven、Gradle、NPM等不同类型的包。 2. **database.jpi**:数据库插件提供了对...

    Assembly插件

    "lib"目录下的文件通常是项目的依赖库,包括JAR、WAR或者其他类型的二进制文件。这些库文件包含了项目运行所依赖的第三方组件,如Spring框架、Hibernate持久化库、Apache Commons等。通过将这些库打包在一起,可以...

    基于SSH+Redis+MySQL的IM即时聊天系统设计与实现

    基于SSH+Redis+MySQL的IM即时聊天系统实现,项目经过测试,可完美运行...拷贝上述生成文件和目录,到指定服务器使用java -jar命令运行服务 一键发布与部署 可参考当前目录中build.sh, start.sh, stop.sh im.service内容

Global site tag (gtag.js) - Google Analytics