myeclipse创建maven工程报错 Could not resolve archetype org.apache.maven.archetypes 解决错误:
Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories. Could not resolve artifact Missing org.apache.maven.archetypes:maven-archetype-quickstart:pom:RELEASE
解决思路:在本地库中装载maven-archetype-quickstart
- 从{_}{+}http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/+_ 下载最新版maven-archetype-quickstart-1.1.jar
2.cmd窗口执行mvn install:install-file -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dversion=1.1 -Dpackaging=jar -Dfile=d:\down\maven-archetype-quickstart-1.1.jar
红字是你jar包放在的位置
Maven使用log4j可能会有协议上的问题
- 如果log4j的版本在1.2.14以上,则会出现下面的错误:
Missing artifact javax.jms:jms:jar:1.1:compile
Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1:compile
Missing artifact com.sun.jmx:jmxri:jar:1.2.1:compile
- 原因是log4j在1.2.15及以上版本更换了协议,与jms冲突。解决办法有两种:一是使用1.2.14版本,二是手动下载jms.jar,安装到maven本地仓库中去。
maven工程pom添加log4j依赖:
<dependency>
<groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> </dependency>
出现错误:
12-10-29 上午09时08分41秒: Missing artifact javax.jms:jms:jar:1.1:compile 12-10-29 上午09时08分41秒: Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1:compile12-10-29 上午09时08分41秒: Missing artifact com.sun.jmx:jmxri:jar:1.2.1:compile
解决方案。改为如下:
<dependency>
<groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> </exclusions> </dependency>
MyEclipse中的Web工程 转为 Maven支持的项目,步骤如下:
(基于Windows XP 系统下 MyEclipse8.6版本) 【黄色背景部分可随意修改】
- 准备工作,下载安装 Maven 3.X 版本,然后将 安装目录下的 conf/settings.xml 文件拷贝到 ~/.m2/ (~表示用户目录,XP系统是C:\Documents and Settings\Administrator) 目录下,并修改其中的配置(不推荐直接修改安装目录下的settings.xml文件):
0.1 <settings> 标签下添加如下子标签,用以更改本地Maven库的路径(此项可选);
<localRepository>D:/maven/repository</localRepository>
0.2 <proxies> 标签下添加如下子标签,配置http代理;
<proxy>
<id>personal</id>
<active>true</active>
<protocol>http</protocol>
<host>172.17.18.80</host>
<port>8080</port>
</proxy>
0.3 <mirrors> 标签下添加如下子标签,将本地所有的Maven请求从中央仓库转为私服中,提高下载效率和减少对中央仓库的依赖;
<!-- 本地请求全部转到私服中下载 -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>All local request turn to nexus repository</name>
<url>{*} http://172.24.2.22:9081/nexus/content/groups/public
{*}</url>
</mirror>
0.4 <profiles>标签添加如下子标签,
<profile>
<id>nexus</id>
<!-- 配置仓库请求 -->
<repositories>
<repository>
<id>central</id>
<url> http://central
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 配置插件仓库请求 -->
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url> http://central
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
0.5 <settings>标签下面添加如下子标签,
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
- 将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec> 标签下(如果代码存在,则无需拷贝)
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments></arguments>
</buildCommand>
- 将以下代码拷贝到工程根路径下的 .project 文件中的 <natures> 标签下(如果代码存在,则无需拷贝)
<nature>org.maven.ide.eclipse.maven2Nature</nature>
- 将以下代码拷贝到工程根路径下的 .classpath 文件中的 <classpath> 标签下(如果代码存在,则无需拷贝)
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- 重启MyEclipse,看到如下Maven依赖
让maven能够支持现有工程,无非就是让它知道两点:
1。java文件存在哪?
2。web根目录在哪?
那么使用刚说的方法,在myeclipse里随便创建一个带有maven的WEB工程,将其中的pom.xml配置文件拷出来,放到现有工程的根目录下,然后简单地修改一下这个配置文件里的内容即可。下面列举几个关键的修改点:
<build> <sourceDirectory>${basedir}/src</sourceDirectory> <outputDirectory>${basedir}/web/WEB-INF/classes</outputDirectory> ...... <plugins> <plugin><artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>${basedir}/web</webappDirectory><warSourceDirectory>${basedir}/web</warSourceDirectory> </configuration> </plugin> ...... </plugins> </build>
明眼人一看就知道,将其中的<sourceDirectory>${basedir}/src</sourceDirectory>改成自己java文件存放目录,将<webappDirectory>${basedir}/web</webappDirectory>改成WEB根目录即可。