最近开始集中精力搞java的开源项目,在这时记录一下使用mvn创建java工程的比较简单的流程,以备不时之需,适用于我等java小白~~~
使用mvn创建java工程
安装mvn
创建java工程命令行执行
mvn archetype:generate -DgroupId=com.mytest -DartifactId=test -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
至少需要提供 groupId 包名和artifactId 工程名也就是jar包的名称。生成目录结构
./
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mytest
│ └── App.java
└── test
└── java
└── com
└── mytest
└── AppTest.java
pom.xml配置文件如果需要使用到java 8的特性,比如lambda表达式,需要调整 maven.compiler.source和 mavin.compiler.target到1.8或更高。
1.81.8如果你的工程需要第三方依赖,需添加依赖到之间
junit
junit
4.11
test
如果需要依赖本地的jar包,而非mvn库中的,则需要使用如下形式,需要scope和systempath属性加持。
org.apache.bookkeeper
bookkeeper-server
${bookkeeper.version}
system
${bookkeeper.localjar}
对于最终编译产生的jar, 在通过java -jar执行时,可通过pom.xml指定生成的jar中的主类
如果不配置这个,在最后执行的时候需要加上类名:java -jar xxxx com.mytest.App
org.apache.maven.plugins
maven-jar-plugin
3.0.2
true
com.mytest.App
编译在pom.xml所在目录下执行 mvn clean package
编译完成生成 target目录, 生成的jar包类似: test-1.0-SNAPSHOT.jar
执行如果有第三方依赖,在编译时可以选择将第三方依赖全部打包到最终的jar包中;
我们这里选择另外一种方式,执行时执定class path的方式: java -cp xxxx:xxxx
我们需要将所有的第三方依赖的jar包集中到一起:
创建一个名为lib的目录;
mvn dependency:copy-dependencies -DoutputDirectory=[上面创建的lib目录的全路径]
这条命令将把在pom.xml文件中dependencies下面的依赖的jar包自动拷贝到lib目录下;
执行
下面给出了一个简单的脚本, 先收集lib下面所有的jar包作为-cp的参数
BK_CLASSPATH="" #收集lib下面所有的jar包作为`-cp`的参数
for i in [lib目录的路径]/*.jar; do
BK_CLASSPATH=${BK_CLASSPATH}:${i}
done
#运行test-1.0-SNAPSHOT.jar
java -cp ${BK_CLASSPATH}:/home/xx/test/java/test/target/test-1.0-SNAPSHOT.jar com.mytest.App