maven笔记

maven注意事项:
怎样让文件夹更有层次感:
通过添加sourcefolder的方式添加首层目录,然后再添加package形成次层目录,这样可以更好地更清晰的展现文件
新建的maven项目,没有maven dependens lib:
目前为止确定是pom文件的问题,由于时间原因,多模块maven以后再研究!
 
 
 
看看你的工程里面的pom.xml是不是不在这个目录里面:D: estopenxds_src1
 
要想使用mvn命令,你需要到pom.xml文件所在的目录执行 mvn 命令,或者在mvn命令中指定pom.xml文件的所在。
 
《maven实战》这本书。
 
groupid里的包地址,会自动把jar包符合这个包命名的jar包都放到红框里面的组里面,当pom这个配置文件如果出错的时候红框里的组会自
 
动消失。
pom.xml出错的时候试着mvn clean/eclipse:eclipse/compiel..
 
如果单是继承ActionSuppor类 就需要xwork-2.1.2.jar
如果要搭建struts2 就要这六个包
struts2-core.jar——Struts2的核心包
xwork-core.jar——Command模式框架,WebWork和Struts2都基于xwork
commons-logging.jar——Java日志工具类包
commons-fileupload-1.2.1.jar——文件上传 
freemarker.jar——模板引擎,一个基于模板生成文本输出的通用工具
ognl.jar——Object-Graph Navigation Language,表达式语言,用来获取和设置Java对象属性
可选包
antlr.jar——语法分析器
aopalliance.jar——AOP联盟标准接口
classworlds.jar——class对象管理
commons-beanutils.jar——Bean处理工具类包 这六个
 
配置${springframework.version}类似方式的时候,要注意着三个图片中的配置
 
后面不能加上2
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.0.Final</version>
</dependency>
 
 
phony.xwork2.ObjectFactory with the name struts has already been loaded by bean - jar:file:/C:/U
Unable to load configuration struts2-core-2.3.16.3.jar!/struts-default.xml:40:72
出现上面这个类似的东西的时候可能是因为用了maven,而lib下的jar包仍然还留着,解决办法就是移除项目中的lib
 
红框中的直接影响到部署的路径
 
利用tomcat部署的时候一定要指定webapp部署的目录,或注释掉指定为
webroot的项目
 
如果java build path 中没有maven,则添加以下:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
 
 
有时候网速不好,或者是其它原因中断了maven本地库里的jar下载,然后会导致pom.xml文件报错,解决的办法就是:
报错错误信息大概意思是说maven想要尝试去下载maven-surefire-plugin,但是又无法下载。
 
解决方法:
首先确定你的电脑是否可以连接网络。
如果可以连接网络,在maven的本地库的路径下执行以下命令:
1
for /r %i in (*.lastUpdated) do del %i
最后,尝试刷新maven工程,看是否可以成功。
这是什么命令?
是在cmd中执行吗?
追答:
是的,但要在maven本地库的路径下
 
maven安装:
 
 
在创建maven项目的时候,如果偷懒不删掉带红叉的源文件目录,而去”巧用“**来消除错误,会造成在该源文件目录下无法正常创建包及类文
 
件!
 
在web.xml中配置springmvc的servlet配置文件的时候,如果是配置默认的不加载另外配置文件的语句,则需要强制建立spring-servlet.xml
 
文件,如果是另外init-param指定配置文件的话,就不需要再另外指定spring-servlet文件。
 
     <!-- 配置spring核心servlet  如若照这个配置,需要强制配置spring-servlet.xml文件!-->
<!--     <servlet> -->
<!--         <servlet-name>spring</servlet-name> -->
<!--         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> -->
<!--         <load-on-startup>1</load-on-startup> -->
<!--     </servlet> -->
<!--     url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问 -->
<!--     <servlet-mapping> -->
<!--         <servlet-name>spring</servlet-name> -->
<!--         <url-pattern>/</url-pattern> -->
<!--     </servlet-mapping> -->
<!--     <welcome-file-list> -->
<!--      <welcome-file>index.html</welcome-file> -->
<!--      </welcome-file-list> -->
    
<!-- springmvc配置部分 其实就是一个普通的servlet -->
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc config</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
      <servlet-name>springMvc</servlet-name>
      <url-pattern>*.html</url-pattern>
    </servlet-mapping>
 
在pom.xml中配置包得时候,同一个大包,也就是 <groupId>org.slf4j</groupId>部分相同的东西,引用的版本都必须是完全相同,否则会
 
找不到某些内置方法
 
在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签...            <scope>provided</scope>
 
maven强制更新:mvn clean install -e -U
 
runas >>mavenInstall  开始编译
 
打包:
 
 
配置 你的pom.xml文件,在你的overview视窗里 配置 packaging为 war 然后
然后点击 pom.xml右键,run  as 选择 install 或是 package
如果项目没问题,配置没问题
就会在项目的target 的目录里生成 war文件,
 
  <pluginExecution> <pluginExecutionFilter <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-
 
plugin</artifactId> <versionRange>[3.1,)</versionRange> <goals> <goal>testCompile</goal> <goal>compile</goal> </goals> 
 
</pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution>
加入这个可以解决加入jdt后报错的问题
 
 
 
import junit.framework.TestListener; 没有使用,但是不知道为什么,在mvn install的时候会提示:“程序包junit.framework不存在”的错误。
 
 
如果提示这个错误,则设置:
web.xml is missing and <failOnMissingWebXml> is set to true
<failOnMissingWebXml>false</failOnMissingWebXml>
 
Plugin execution not covered by lifecycle configuration: 
增加了eclipse jdt 编译以后会报错(可以忽略这个错误):
<compilerId>eclipse</compilerId>  
 
pom中添加jetty插件:
<!--             jetty -->
                 <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.5</version>
                <configuration>
                    <scanIntervalSeconds>5</scanIntervalSeconds>
                    <stopKey>foo</stopKey>
                    <stopPort>9999</stopPort>
                    <webAppConfig>
                        <contextPath>/dooriya</contextPath>
                        <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
                    </webAppConfig>
                    <systemProperties>
                        <systemProperty>
                            <name>jetty.port</name>
                            <value>8083</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
然后使用mvn jetty:run命令启动项目,终止直接control + C
 
<!--             tomcat -->
             <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0-SNAPSHOT</version>
            <configuration>
                <url>http://localhost:8083/manage/login</url> 
                <server>tomcat</server>
            </configuration>
              </plugin>
       mvn tomcat:run  开始运行项目  mvn tomcat:stop可以终止
 
原来pom.xml乱导入文件,虽然pom正常,但是会造成其它xml文件解析失败
 
eclipse插件中,新建run fangshi wei build :
mvn -Djetty.port=9999 jetty:run 
tomcat:run -Dmaven.tomcat.port=8080 这个是指定maven tomcat的端口
 

<plugin>	<groupId>org.codehaus.mojo</groupId>	<artifactId>tomcat-maven-plugin</artifactId>	<configuration>		<uriEncoding>UTF-8</uriEncoding>		<path>/monitor</path>                <!--在这里定义端口号 -->                <port>8089</port>	</configuration>/plugin>
<!--生成jar的时候会同时生成源码包的插件 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-source-plugin</artifactId>            </plugin>
找不到maven dependends:
首先检查下是否加入了dependends依赖包配置,然后看下面

最后我对比了一个没有出错的项目的.classpath文件,ctrl+f找maven,把对的那个项目的.classpath文件中有maven的全都粘到出错的项目中,然后refresh项目,发现出现了Maven Dependencies这个库!

后来再上网搜索,找到了解决办法:

找自己出错项目的.classpath文件,打开,ctrl+f,找是否有以下文件,如果没有在末尾加进去,再refresh项目即可:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
		</attributes>
</classpathentry>

当遇到maven结构造成的类报错,可以在这里add,以com为界限来add

多项目,有时候build还是要全局的
可以解决maven 错误: 找不到符号的问题
<parent>
<groupId>com.ocean</groupId>
<artifactId>marineProj</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
子maven项目里需要配置这个,另外
<groupId>com.ocean.frame</groupId>
<artifactId>blog</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
groupid也是有区别的
<dependencies>
<dependency>
<groupId>com.ocean</groupId>
<artifactId>commons</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>依赖common是为了依赖里面的自编java代码,而不是说有父maven那种依赖第三方jar包

<groupId>com.ocean</groupId>groupid是组Id,是网站全路径
<artifactId>common</artifactId>articactid是子项目的名称




原文地址:https://www.cnblogs.com/marineblog/p/5559212.html