使用maven插件创建Jar文件

时间:2016-05-03 17:07:21

标签: java maven spring-boot maven-2 maven-plugin

我在创建项目类型为pom的JAR文件时遇到了一些问题,并将此jar作为依赖项添加到其他项目中。

我使用maven阴影插件制作JAR。它编译得很好,但它在项目目标目录中创建了一个jar文件,但在.m2文件夹中却没有。而且,当我提取文件时,它没有类和资源等

这是我有两个项目

1)ProjectTestB 项目B是一个独立的项目,它有各种模块,如调度程序,服务,Web模块,它们作为依赖项添加到其他项目中

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>TestProjectB</groupId>
  <artifactId>ProjectTestB</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
    <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <excludes>
                  <exclude>classworlds:classworlds</exclude>
                  <exclude>junit:junit</exclude>
                  <exclude>jmock:*</exclude>
                  <exclude>*:xml-apis</exclude>
                  <exclude>org.apache.maven:lib:tests</exclude>
                  <exclude>log4j:log4j:jar:</exclude>
                </excludes>
              </artifactSet>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
    <modules>
        <module>scheduler</module>
    </modules>
</project> 

2)ProjectA

项目A包含ProjectB和其他一些服务和业务类的依赖项。只有Project A包含将创建可执行JAR文件的Main类

Pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>projectA</groupId>
  <artifactId>projectA</artifactId>
  <version>0.0.1-SNAPSHOT</version>

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.1.RELEASE</version>
    </parent>
  <dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


    <dependency>
        <groupId>TestProjectB</groupId>
            <artifactId>ProjectTestB</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies> 
</project>

所以问题是

1)如果项目包是POM(项目B),如何制作具有所有类,资源等的jar?

2)如何在Project A类路径中添加Project B jar文件来访问它的模块?

1 个答案:

答案 0 :(得分:0)

我看到你尝试做一些奇怪的事情。

您的projectB有许多模块,因此您的projectA应该依赖于这些模块。 projecB的{​​{1}}模块具有类型jar,因此您可以轻松依赖它projectB