阅读更多
1 使用技巧
1.1 运行Java程序
1.1.1 从命令行运行
运行前先编译代码,exec:java
不会自动编译代码,你需要手动执行mvn compile
来完成编译
编译完成后,执行exec运行main方法
1 2 3
| mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.args="arg0 arg1 arg2" mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime
|
1.1.2 在pom.xml中指定某个阶段执行
将CodeGenerator.main()
方法的执行绑定到maven的test
阶段,通过下面的命令可以执行main方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <phase>test</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.vineetmanohar.module.CodeGenerator</mainClass> <arguments> <argument>arg0</argument> <argument>arg1</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
|
1.1.3 在pom.xml中指定某个配置来执行
将配置用<profile>
标签包裹后就能通过指定该配置文件来执行main方法,如下
1
| mvn test -Pcode-generator
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <profiles> <profile> <id>code-generator</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <phase>test</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.vineetmanohar.module.CodeGenerator</mainClass> <arguments> <argument>arg0</argument> <argument>arg1</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
|
1.2 下载指定jar包
1
| mvn dependency:get -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version] -DrepoUrl=https://repo.maven.apache.org/maven2/ -Dtransitive=false
|
Example:
1
| mvn dependency:get -DgroupId=org.apache.hive -DartifactId=hive-exec -Dversion=3.1.2 -DrepoUrl=https://repo.maven.apache.org/maven2/ -Dtransitive=false
|
2 依赖冲突时的加载顺序
当一个类同时存在于依赖A于依赖B中时,加载的版本依据以下的原则
- 首先,依赖路径长度,依赖路径短的优先加载
- 其次,依赖声明顺序(在同一个pom中),先声明的依赖优先加载
- 最后,依赖覆盖,子POM文件中的依赖优先加载
3 国内源
1 2 3 4 5 6 7 8 9 10
| <settings> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <mirrorOf>central</mirrorOf> <url>https://maven.aliyun.com/repository/central</url> </mirror> </mirrors> </settings>
|
4 参考