maven注意事项:
怎样让文件夹更有层次感:
通过添加sourcefolder的方式添加首层目录,然后再添加package形成次层目录,这样可以更好地更清晰的展现文件
新建的maven项目,没有maven dependens lib:
目前为止确定是pom文件的问题,由于时间原因,多模块maven以后再研究!
看看你的工程里面的pom.xml是不是不在这个目录里面:D:\test\openxds_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是子项目的名称