1. Linux新建项目
mvn archetype:generate,然后在命令行的提示下输入你要建的项目的 groupId,artifactId,以及version等
2. 常用指令
- mvn install(安装): 把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
- mvn package(打包): 源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
- mvn clean: 清除项目
- mvn compile(编译): 编译项目源码
- mvn test-compile : 编译项目测试源码
- mvn test(测试): 使用合适的单元测试框架测试编译后的源码。
- java -jar *.jar
- java -cp *.jar *(class)
install与package的区别:项目A依赖项目B,B项目如果只是执行clean、package的话,只是打包到B项目的target下面,再编译项目A的时候会报编译错误,原因是项目B没有执行install。所以package只是打包到target下,install是打包安装到本地maven仓库。对于没有依赖关系的包,二者没有太大区别。
3. 实战示例
mvn archetype:generate
下图所示节点会停下, 要求选择项目的类型(Choose archetype) ,直接回车( 默认是7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.) )
groupId: 公司名称
artifactId: 项目名称
version:版本
package:包名
新建项目完成,可以发现artifactId即为项目文件夹名称,package为Java下的文件夹名称。
main/java/com/test/App.java 为主类,内容如下:
mvn compile 编译当前的项目,可以发现多了target这部分
mvn install 编译成jar包,可以发现target下多了一个jar包
java -jar target/com.test-1.jar,执行jar包,报无主类错误
java -cp target/com.test-1.jar com.test.App,直接运行对应类,运行成功。
4. 错误总结
4.1 加载不到主类
分析:缺乏启动类
解决方法:在pom.xml中添加如下内容
<build>
<plugins>
<!--添加maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--添加自己的启动类路径!-->
<configuration>
<mainClass>com.test.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4.2 出现 JNI 错误
jdk和jre版本相同,在连接Neo4j时出现该错误。
原因:未明
解决方法:同加载不到主类