- 发布
- 将该Jar包安装到本地仓库中
[D:\MavenTest\HelloWord]$ mvn clean install
[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ HelloWord ---
[INFO] Building jar: D:\MavenTest\HelloWord\target\HelloWord-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ HelloWord ---
[INFO] Installing D:\MavenTest\HelloWord\target\HelloWord-0.0.1-SNAPSHOT.jar to D:\maven\m2\repository\com\wys\myapp\HelloWord\0.0.1-SNAPSHOT\HelloWord-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\MavenTest\HelloWord\pom.xml to D:\maven\m2\repository\com\wys\myapp\HelloWord\0.0.1-SNAPSHOT\HelloWord-0.0.1-SNAPSHOT.pom
说明:
-
红色是源目录,绿色是仓库目录,安装文件包括jar包和POM文件
-
仓库目录说明:和POM文件定义的这段相同
-
主仓库路径:D:\maven\m2\repository
-
公司组织路径:\com\wys\myapp\
-
项目路径:HelloWord
-
版本号:0.0.1-SNAPSHOT
-
JAR包名:HelloWord-0.0.1-SNAPSHOT.jar
-
- 在其它项目中就可以通过引用jar包使用helloworld中的类了
<dependency> <groupId>com.wys.myapp</groupId> <artifactId>HelloWord</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
- 直接执行jar包中的main方法
[D:\MavenTest\HelloWord]$ java -jar target\HelloWord-0.0.1-SNAPSHOT.jar (target\HelloWord-0.0.1-SNAPSHOT.jar jar包所在路径)
target\HelloWord-0.0.1-SNAPSHOT.jar中没有主清单属性
- 因为上面的install操作没有导出main方法,所以需要修改POM.xml文件,新增插件:maven-shade-plugin,指定包下面的某个public java类
<!--指定执行包下面的某个public 类的 main方法--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.wys.myapp.helloworld.HelloWorld</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
- 重新执行 mvn clean install后重新生成两个jar
,再次运行jar包结果如下
[D:\MavenTest\HelloWord]$ java -jar target\HelloWord-0.0.1-SNAPSHOT.jar
hello world (这就是输出结果)