maven仓库如何引⼊本地jar包,Maven多种⽅式打可执⾏jar包
MAVEN依赖关系中Scope的作⽤
Dependency Scope 在POM 4中,<dependency>中还引⼊了<scope>,它主要管理依赖的部署。⽬前依赖项的作⽤域<scope>可以使⽤5个值:
2. 在定义项⽬的依赖项的时候,我们可以通过scope来指定该依赖项的作⽤范围。scope的取值有compile、runtime、test、provided、system和import。
3. compile:这是依赖项的默认作⽤范围,即当没有指定依赖项的scope时默认使⽤compile。compile范围内的依赖项在所有情况下都是有效的,包括运⾏、测试和编译时。
4. runtime:表⽰该依赖项只有在运⾏时才是需要的,在编译的时候不需要。这种类型的依赖项将在运⾏和test的类路径下可以访问。
5. test:表⽰该依赖项只对测试时有⽤,包括测试代码的编译和运⾏,对于正常的项⽬运⾏是没有影响的。
6. provided:表⽰该依赖项将由JDK或者运⾏容器在运⾏时提供,也就是说由Maven提供的该依赖项我们只有在编译和测试时才会⽤到,⽽在运⾏时将由JDK或者运⾏容器提供。
7. system:当scope为system时,表⽰该依赖项是我们⾃⼰提供的,不需要Maven到仓库⾥⾯去。指定scope为system需要与另⼀个属性元素systemPath⼀起使⽤,它表⽰该依赖项在当前系统的位置,使⽤的是绝对路径。POM⽂件⾥⾯可以引⽤⼀些内置属性(Maven预定义可以直接使⽤)
2.
3. ${basedir} 项⽬根⽬录
4. ${version}表⽰项⽬版本;
5. ${project.basedir}同${basedir};
6. ${project.version}表⽰项⽬版本,与${version}相同;
7. ${project.build.directory} 构建⽬录,缺省为target
8. ${project.build.sourceEncoding}表⽰主源码的编码格式;
9. ${project.build.sourceDirectory}表⽰主源码路径;
10. ${project.build.finalName}表⽰输出⽂件名称;
11. ${project.build.outputDirectory} 构建过程输出⽬录,缺省为target/classes
如何在Maven项⽬中引⼊本地包呢?
⽐如我从其它项⽬打⼀个jar包,引⼊到现有项⽬中。
⽅法⼀:将待引⼊的包放在⽬录下如lib⽬录下,修改pom⽂件,加⼊依赖并且scope要设置为system
<dependencies>
2. <dependency>
3. <groupId>com.fbcds</groupId>
4. <artifactId>fbcds</artifactId>
5. <version>1.0</version>
6. <scope>system</scope>
7. <systemPath>${project.basedir}/lib/fbcds.jar</systemPath>
8. </dependency>
9. </dependencies>
上⾯设置完成后,运⾏mvn package命令执⾏成功。但打出来的包⾥⾯不包含lib⽬录和fbcds.jar这个引⽤的包,即打出来的包不是可执⾏的jar。所以个⼈开发的话可以使⽤这种
⽅式,如果团队开发请使⽤⽅法⼆。
⽅法⼆:将待引⼊的jar包安装到本地repository中
1、先把待引⼊的jar包放在⼀个⽬录下,需要改⼀下包名,如fbcds.jar修改成fbcds-1.0.jar,如F:\lib⽬录,在命令⾏CD到lib⽬录,执⾏以下命令:
1。mvn install:install-file -Dfile=fbcds-1.0.jar -DgroupId=fbcds -DartifactId=fbcds -Dversion=1.0 -Dpackaging=jar
2. mvn install:install-file -Dfile=ojdbc7-1.0.jar -DgroupId=ojdbc7 -DartifactId=ojdbc7 -Dversion=1.0 -Dpackaging=jar
2、修改项⽬pom⽂件加⼊包对应的依赖
上⾯的fbcds和ojdbc7就是新加的引⽤包的依赖。
完成后,在本地仓库可看到对应的⽂件夹内容:
MAVEN如何打可执⾏的JAR包
前提条件:已成功将待引⼊的jar包安装到本地repository中
⽅法⼀、使⽤maven-shade-plugin插件打可执⾏的jar包
1、测试类代码
package st;
2.
3. import java.sql.Connection;
4. import java.sql.DriverManager;
5. import java.sql.ResultSet;
6. import java.sql.SQLException;
7. import java.sql.Statement;
8.
9. link.fbcis.store.StoreDao;
10.
11. public class TestClass {
12. public static void main(String[] args) {
13. StoreDao a = new StoreDao();
14. System.out.println("------" + a.toString());
15. Connection con = null;
16. Statement st = null;
17. ResultSet rs = null;
18. try {
19. String sql = "select * from temp_head where temp_no='C530015I19008015'";
20. Class.forName("oracle.jdbc.driver.OracleDriver");
21. con = Connection("jdbc:oracle:thin:@//10.101.2.19:1521/pdbqmytcis","qmytcis","qmytcis123");
22. st = ateStatement();
23. rs = st.executeQuery(sql);
24. ()){
25. System.out.String("temp_no"));
26. }
27.
28. } catch (Exception e) {
29. e.printStackTrace();
30. } finally{
31. try {
32. rs.close();
33. st.close();
34. con.close();
35. } catch (SQLException e) {
36. e.printStackTrace();
37. }
38. }
39. }
40. }
上⾯类中引⽤到了fbcds和ojdbc7包的内容。
2、对应pom⽂件
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
2. <modelVersion>4.0.0</modelVersion>
3. <groupId>222</groupId>
4. <artifactId>222</artifactId>
5. <version>0.0.1-SNAPSHOT</version>
6. <name>222</name>
7. <dependencies>
8. <dependency>
9. <groupId>log4j</groupId>
10. <artifactId>log4j</artifactId>
11. <version>1.2.17</version>
12. </dependency>
13. <dependency>
14. <groupId>fbcds</groupId>
15. <artifactId>fbcds</artifactId>
16. <version>1.0</version>
17. </dependency>
18. <dependency>
19. <groupId>ojdbc7</groupId>
20. <artifactId>ojdbc7</artifactId>
21. <version>1.0</version>
22. </dependency>
23. </dependencies>
24. <build>
25. <plugins>
26. <plugin>
27. <groupId>org.apache.maven.plugins</groupId>
28. <artifactId>maven-shade-plugin</artifactId>
29. <version>2.4.3</version>
30. <executions>
31. <execution>
32. <phase>package</phase>
33. <goals>
34. <goal>shade</goal>
35. </goals>
36. <configuration>
37. <transformers>
38. <transformer implementation="org.apache.maven.source.ManifestResourceTransformer">
39. <mainClass>st.TestClass</mainClass>
40. </transformer>
41. </transformers>
42. </configuration>
43. </execution>
44. </executions>
45. </plugin>
46. </plugins>
47. </build>
48.
49. </project>
在eclipse中右键项⽬run as 选择Maven package,可看打包的target⽬录内容:
⽐较两个包内容:
执⾏包:cmd下
original-MavenPackage-0.0.1-SNAPSHOT.jar中没有主清单属性是执⾏不了的。
⽅法⼆、使⽤maven-assembly-plugin插件打可执⾏的jar包
测试类与⽅法⼀中⼀样,只是pom不⼀样,pom⽂件如下:
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
2. <modelVersion>4.0.0</modelVersion>
3. <groupId>com.lwf.MavenPackage</groupId>
4. <artifactId>MavenPackage</artifactId>
5. <version>0.0.1-SNAPSHOT</version>
6. <name>MavenPackage</name>
7. <dependencies>
8. <dependency>
9. <groupId>log4j</groupId>
10. <artifactId>log4j</artifactId>
11. <version>1.2.17</version>
12. </dependency>
13. <dependency>
14. <groupId>fbcds</groupId>
15. <artifactId>fbcds</artifactId>
16. <version>1.0</version>
17. </dependency>
18. <dependency>
19. <groupId>ojdbc7</groupId>
20. <artifactId>ojdbc7</artifactId>
21. <version>1.0</version>
22. </dependency>
23. </dependencies>
24. <build>
25. <plugins>
26. <!-- 使⽤ maven-shade-plugin插件打可执⾏包-->
27. <!--
28. <plugin>
29. <groupId>org.apache.maven.plugins</groupId>
30. <artifactId>maven-shade-plugin</artifactId>
31. <version>2.4.3</version>
32. <executions>
33. <execution>
34. <phase>package</phase>
35. <goals>
36. <goal>shade</goal>
37. </goals>
38. <configuration>
39. <transformers>
40. <transformer implementation="org.apache.maven.source.ManifestResourceTransformer">
41. <mainClass>st.TestClass</mainClass>
42. </transformer>
43. </transformers>
44. </configuration>
45. </execution>
46. </executions>
47. </plugin>
48. -->
49.
50. <!-- 使⽤ maven-Assembly-plugin插件打可执⾏包-->
51. <plugin>
52. <groupId>org.apache.maven.plugins</groupId>
53. <artifactId>maven-assembly-plugin</artifactId>
54. <version>2.6</version>
55. <configuration>
56. <!-- get all project dependencies -->
57. <descriptorRefs>
58. <descriptorRef>jar-with-dependencies</descriptorRef>
59. </descriptorRefs>
60. <!-- MainClass in mainfest make a executable jar -->
61. <archive>maven打包本地jar包
62. <manifest>
63. <mainClass>st.TestClass</mainClass>
64. </manifest>
65. </archive>
66. </configuration>
67. <executions>
68. <execution>
69. <id>make-assembly</id>
70. <phase>package</phase>
71. <goals>
72. <goal>single</goal>
73. </goals>
74. </execution>
75. </executions>
76. </plugin>
77. </plugins>
78. </build>
79.
80. </project>
修改完pom后,在eclipse中右键项⽬run as 选择Maven package,可看打包的target⽬录内容:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论