文档章节

解决Maven开发发布出错

CurtainRight
 CurtainRight
发布于 2015/11/09 20:51
字数 1611
阅读 111
收藏 0

1.JDK版本的设置

设置全局的jdk,在setting.xml文件中的profiles元素下添加如下profile元素

<profile>  

    <id>jdk17</id>  

    <activation>  

        <activeByDefault>true</activeByDefault>  

        <jdk>1.7</jdk>  

    </activation>  

    <properties>  

        <maven.compiler.source>1.7</maven.compiler.source>  

        <maven.compiler.target>1.7</maven.compiler.target>  

        <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>  

    </properties>   

</profile>  

设置局部的jdk,在项目的pom,xml文件中添加如下build元素

<build>  

    <plugins>  

       <plugin>  

            <groupId>org.apache.maven.plugins</groupId>  

            <artifactId>maven-compiler-plugin</artifactId>  

            <configuration>  

                <source>1.7</source>  

                <target>1.7</target>  

            </configuration>  

        </plugin>  

    </plugins>  

</build>  

2.MAVEN的依赖方式主要有两种WAR包和JAR包;

JAR包-查看源码方式:右键工程-->maven-download source ,就可以下载源码;点开jar包就可以查看源码;
WAR包-查看源码方式:右键工程-->maven-->install;工程target目录下会出现目录war\work ,该目录就是依赖的WAR解压后的内容;


3.使用MAVEN开发WEB工程的相关注意点

第一种情况如果WEB工程只依赖JAR包,注意事项相对少些;

如果工程JAR依赖发生了变化,只需要右键工程->MAVEN->UPDATE PROJECT,(该步骤的含义更新JAR依赖,同时根据POM.xml的JDK版本更新工程的编译版本,clean project重新编译工程)


第二种情况:

如果WEB工程依赖了WAR包,如果依赖变更,除了UPDATE PROJECT之外,还要执行maven Install ;


如果WEB工程依赖于其他WAR包, 处理步骤如下:

STEP1. maven Install (该命令会下载WAR包,解压到目录target -->war -->work )


STEP2.然后和本工程的webapp内容进行合并,


注意:合并的原则是不覆盖本工程的文件(即如果本工程有a.jsp,依赖的war包相同目录也有同名文件,则合并后的目录中是本工程的a.jsp);


应用场景:该覆盖规则可以用来自定义本工程的个性化样式,比如觉得框架某个样式不满意,可以自己在本工程的相同目录添加同名的样式文件,这样就实现了自定义样式。



4.使用MAVEN进行Install操作时,提示编译错误;原因是maven自带的编译规则与eclipse的冲突,可以使用eclipse自带的编译功能(eclipse工具菜单栏 project-->clean强制编译),再执行Install。



5.使用eclipse tomcat插件有时出现JAR包或者类找不到的情况,右键工程检查deployment assembly(发布打包)配置

每一项都有具体的含义:一个最终的发布包一般会有WEB-INF,lib,classes等目录,以下的各项就是相关目录与源码的关系!

只需要将最终运行的发布目录打开,和“deployment assembly”进行比对就能知道问题所在。



6.Maven常用命令

maven clean 删除target目录

maven install 打包到本地

maven deploy 部署到私服

 

如果Web项目的WEB-INF(E:\Java\work\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\hollybeacon-web\WEB-INF)目录下没有web.xml文件,那么就需要在tomcat中clean。

如果Web项目的WEB-INF/classes(E:\Java\work\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\hollybeacon-web\WEB-INF\classes)目录下没有文件,那么就需要清理Project。最好是开启Eclipse的自动构建。

最后就是点击Alt+Enter进行查看,查看发布的目录。

 

1、项目清理: 选择菜单栏的Project——>Clean..——>勾选需要清理的项目(也可以选择all)  

切记:clean了项目,需要重新编译


2、项目如果是maven项目,则有时候clean project并不起效。这时候需要用maven来清理缓存:右键项目——>Run As ——> Maven clean

切记:此方法清除后,需要重新进行maven编译,可以使用Maven——>Update  Project   或者 自定义的 Maven build


3、如果是以上两个都不起效,那就直接进入项目的classes 目录下,查看编译后的class,进行反编译,与现在的项目进行对比,看看是否更新了,如果没有,删除重新编译


4、如果是web项目,并用Tomcat启动的,发现缓存问题,项目没更新,解决办法:删除项目,并进入Tomcat 的webapps  和 work 目录,删除你的项目,然后重新导入项目,重新编译 


5、浏览器缓存:浏览器缓存包括浏览器自带的缓存 和  程序缓存

(a)自带缓存:很多浏览器,比如google有时候会问你保不保存数据,如果你点的是,在很多时候容易出现数据没更新的问题

          解决办法:对于浏览器记住密码或是保存数据什么的 要慎重.. 如果出现问题:如google,选择历史记录——>清除浏览数据——>全部

6、Maven下载源码

1:Maven命令下载源码和javadocs

当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven命令下载这些源码,然后再进行引入,通过mvn命令能够容易的达到这个目的:

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

命令使用方法:首先进入到相应的pom.xml目录中,然后执行以上命令:

第一个命令是尝试下载在pom.xml中依赖的文件的源代码。

第二个命令:是尝试下载对应的javadocs

但是有可能一些文件没有源代码或者javadocs

执行Maven-Download Source

2:通过配置文件添加

打开maven配置文件 setting.xml文件(.../.m2/settings.xml) 增加如下配置:

  1. <profiles>  

  2. <profile>  

  3.     <id>downloadSources</id>  

  4.     <properties>  

  5.         <downloadSources>true</downloadSources>  

  6.         <downloadJavadocs>true</downloadJavadocs>             

  7.     </properties>  

  8. </profile>  

  9. </profiles>  

  10.   

  11. <activeProfiles>  

  12.   <activeProfile>downloadSources</activeProfile>  

  13. </activeProfiles>  

3:配置eclipse

Window > Preferences > Maven and checking the "Download Artifact Sources" and "Download Artifact JavaDoc" options


 注意:

MyEclipse下部署Maven工程到Tomcat

1)在工程名或者pom.xml上右键,Run As->Maven Clean,该maven指令用于删除target目录下的内容,如下图所示:

 

2)在工程名或者pom.xml上右键,Run As->Maven install,该maven指令会将工程打包到本地maven仓库。刷新工程,你会看到target目录下生成了一个hollybeacon-start文件夹,如下图所示:

 

注:如果是第一次执行上面两个Maven指令,可能会下载一些文件,下载过程中,请耐心等待。

3)更改工程的发布目录

在工程名上右键->Properties,在弹出的对话框中选择MyEclipse->Deployment Assembly,如图所示:

 

4)选中hollybeacon-start,点击Remove,移除hollybeacon-start;点击Add,选择target下面的hollybeacon-start,点击finish,添加/target/hollybeacon。如图所示:

 

5)WEB_INF下面没有lib包

配置

© 著作权归作者所有

共有 人打赏支持
CurtainRight
粉丝 6
博文 172
码字总数 61177
作品 0
武汉
程序员
私信 提问
使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)

前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子。假如一个项目,由A、B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依...

凯文加内特
2015/11/05
0
0
maven plugin的execution出错

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-dependency-plugin:2.7:copy... 错误如上,有介绍解决方法org.eclipse.m2elifecycle-mapping1.0......

疯狂的兔子
2014/03/18
0
0
Maven版本号中隐藏的惊天大秘密

一、背景   现在主流的Java系的互联网公司里,绝大多数公司都使用Maven作为依赖管理工具,一般我们对于依赖的版本号,常见两种类型:一种以“-RELEASE”结尾,另一种以“-SNAPSHOT”结尾。...

hafiz.zhang
2017/12/27
0
0
Maven自动部署(SCM-SVN/Git)(maven-scm-plugin/maven-release-plugin插件的使用)

以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/mavendeployment_automation.html: 注意:Maven自动构建和自动部署的区别在于,构建只是编译代码阶段,而部署...

easonjim
2017/05/15
0
0
gitlab+jenkins+maven持续集成自动化部署平台

背景:为了改变目前手工发布项目的流程烦锁,耗时,容易出错,浪费人力物力财力,低效的状况,搭建基于docker容器化的git+jenkins+maven持续集成自动化部署平台,实现从代码提交到生产部署的...

xiejunbo
2017/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
2
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部