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小时内删除。