【摘要】Apache Maven是一款项目管理和自动化构建工具,基于项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,本文主要是 maven 的安装体验及一些配置的简单介绍。
安装:
wget “http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz”
maven运行要依赖Java jdk
JAVA_HOME=/usr/java/jdk PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export JAVA_HOME CLASSPATH PATH
以下参考:oracle文档
mkdir -p /home/sudops/myproj/ cd /home/sudops/myproj/helloworld mvn archetype:generate -DgroupId=com.sudops.helloworld -DartifactId=helloworld -Dpackage=com.sudops.helloworld -Dversion=1.0-SNAPSHOT artifactId: helloworld version: 1.0-SNAPSHOT package: com.sudops.helloworld Y: : [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.sudops.helloworld [INFO] Parameter: packageName, Value: com.sudops.helloworld [INFO] Parameter: package, Value: com.sudops.helloworld [INFO] Parameter: artifactId, Value: helloworld [INFO] Parameter: basedir, Value: /home/sudops/myproj [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: /home/sudops/myproj/helloworld [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:26 min [INFO] Finished at: 2014-07-19T22:48:25+08:00 [INFO] Final Memory: 15M/119M [INFO] ------------------------------------------------------------------------ mvn package #会download 很多包 [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building helloworld 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom 。。。。 ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.sudops.helloworld.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld --- Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom (5 KB at 13.1 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom (3 KB at 8.2 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom (2 KB at 5.0 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom (3 KB at 7.7 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom (19 KB at 53.6 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom (1018 B at 3.0 KB/sec) Downloading: http://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.1/commons-lang-2.1.pom Downloaded: http://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.1/commons-lang-2.1.pom (10 KB at 28.7 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar Downloading: http://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.1/commons-lang-2.1.jar Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar (22 KB at 42.1 KB/sec) Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar (57 KB at 106.0 KB/sec) Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar (60 KB at 78.4 KB/sec) Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar (181 KB at 179.0 KB/sec) Downloaded: http://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.1/commons-lang-2.1.jar (203 KB at 168.3 KB/sec) [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:07 min [INFO] Finished at: 2014-07-21T10:01:12+08:00 [INFO] Final Memory: 11M/119M [INFO] ———————————————————————————————————— java -cp target/helloworld-1.0-SNAPSHOT.jar com.sudops.helloworld.App 运行: java -cp target/helloworld-1.0-SNAPSHOT.jar com.sudops.helloworld.App Hello World!
#配置maven连接远程服务器的用户和密码:
cat /usr/local/maven/conf/settings.xml
<server>
<id>sudops-maven-repository-snapshots</id>
<username>root</username>
<password>myrootpwd</password>
</server>
<server>
<id>sudops-maven-repository</id>
<username>root</username>
<password>myrootpwd</password>
</server>
<!--
<server>
<id>sudops-maven-repository-snapshots</id>
<privateKey>/root/.ssh/id_rsa</privateKey>
<passphrase></passphrase>
</server>
<server>
<id>sudops-maven-repository</id>
<privateKey>/root/.ssh/id_rsa</privateKey>
<passphrase></passphrase>
</server>
-->
下面是遇到的一些问题,第二次执行mvn deploy的时候会hung住。
------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.sudops.helloworld.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld --- [INFO] Building jar: /home/sudops/myproj/helloworld/target/helloworld-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ helloworld --- [INFO] Installing /home/sudops/myproj/helloworld/target/helloworld-1.0-SNAPSHOT.jar to /dq/maven/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.jar [INFO] Installing /home/sudops/myproj/helloworld/pom.xml to /dq/maven/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.pom [INFO] [INFO] --- maven-deploy-plugin:2.8.1:deploy (default-deploy) @ helloworld --- Downloading: scp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/maven-metadata.xml 779/778 B
第二次运行的时候发现这里会卡住
mvn -X debug显示是通过root用户和密码认证的,改成sshkey方式仍然不起作用,google了半天,改成sftp,终于可以用了。
以下是修改为sftp之后的运行情况:
------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.sudops.helloworld.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld --- [INFO] Building jar: /home/sudops/myproj/helloworld/target/helloworld-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ helloworld --- [INFO] Installing /home/sudops/myproj/helloworld/target/helloworld-1.0-SNAPSHOT.jar to /dq/maven/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.jar [INFO] Installing /home/sudops/myproj/helloworld/pom.xml to /dq/maven/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.pom [INFO] [INFO] --- maven-deploy-plugin:2.8.1:deploy (default-deploy) @ helloworld --- Downloading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/maven-metadata.xml Downloaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/maven-metadata.xml (778 B at 3.3 KB/sec) Uploading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-20140721.000800-4.jar Uploaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-20140721.000800-4.jar (3 KB at 89.6 KB/sec) Uploading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-20140721.000800-4.pom Uploaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/helloworld-1.0-20140721.000800-4.pom (3 KB at 103.1 KB/sec) Downloading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/maven-metadata.xml Downloaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/maven-metadata.xml (292 B at 40.7 KB/sec) Uploading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/maven-metadata.xml Uploaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/1.0-SNAPSHOT/maven-metadata.xml (778 B at 40.0 KB/sec) Uploading: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/maven-metadata.xml Uploaded: sftp://mvn.sudops.com/proj/maven/snapshots/com/sudops/helloworld/helloworld/maven-metadata.xml (292 B at 16.8 KB/sec) [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.333 s [INFO] Finished at: 2014-07-21T08:08:00+08:00 [INFO] Final Memory: 13M/148M [INFO] ------------------------------------------------------------------------
当前的pom.xml配置情况
# cat pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sudops.helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<target>1.6</target>
<source>1.6</source>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<encoding>UTF-8</encoding>
<charset> UTF-8</charset>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.5</version>
</extension>
</extensions>
</build>
<distributionManagement>
<repository>
<id>duoqu-maven-repository</id>
<url>sftp://mvn.sudops.com/proj/maven</url>
</repository>
<snapshotRepository>
<id>duoqu-maven-repository-snapshots</id>
<url>sftp://mvn.sudops.com/proj/maven/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>

