Maven命令行:如何将统一的jar文件拆分为2个独立的部分?

时间:2017-01-06 16:51:32

标签: python-2.7 maven intellij-idea jar

以下是上下文:我正在使用 2个项目 - 两个独立包中的MAIN和TESTS类 。在我独特的pom.xml文件中,该文件与MAIN类在同一个包中,我使用以下插件添加了TESTS文件。目标:

  • build-helper-maven-plugin& add-source - 并添加TESTS文件路径的路径。
  • maven-resources-plugin&复制资源
  • maven-assembly-plugin&单

到目前为止,我成功构建了1个jar文件 - 在python脚本中 - 包含MAIN和TESTS,在3个命名的插件和MAIN中的pom文件的帮助下 - 其中TESTS被添加为资源。 我的目标是从我刚构建的文件中构建 2个独立的jar文件 - MAIN和TESTS 。但我不知道如何。

修改

父模块的

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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <!-- project coordinates -->
    <groupId>com.xyz</groupId>
    <artifactId>multi-app</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <modules>
            <module>app</module>
            <module>util</module>
    </modules>

第一个孩子模块

pom:

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

     <parent>
            <groupId>com.xyz</groupId>
            <artifactId>multi-app</artifactId>
            <version>1.0</version>
    </parent>

    <groupId>com.xyz</groupId>
    <artifactId>util</artifactId>
    <version>1.0</version>

    <dependencies>
            <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.12</version>
                    <scope>test</scope>
            </dependency>
            <dependency>
                    <groupId>commons-lang</groupId>
                    <artifactId>commons-lang</artifactId>
                    <version>2.4</version>
            </dependency>
    </dependencies>

第一个孩子类模块:

    package com.xyz.util;

public class UserMsg {

        public static String getMessage() {
               return(" Hello World!");
        }
}
第二个孩子模块

pom:

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
            <groupId>com.xyz</groupId>
            <artifactId>multi-app</artifactId>
            <version>1.0</version>
    </parent>

    <groupId>com.xyz</groupId>
    <artifactId>app</artifactId>
    <version>1.0</version>

    <dependencies>
            <dependency>
                    <groupId>com.xyz</groupId>
                    <artifactId>util</artifactId>
                    <version>1.0</version>
            </dependency>
    </dependencies>

第二个孩子类模块:

   package com.xyz;

import com.xyz.util.*;

public class App {

        public static void main(String[] args) {
                System.out.println(UserMsg.getMessage());
        }

}

结果:

  1. 我在父目录中成功构建了两个jar文件。

  2. 此外,一个jar包含所有文件 - 来自两个模块中的任何一个,并且确保设置了依赖关系。

  3. 目标:

    1. 我希望将“组合”的文件拆分为2个jar文件,一旦构建完毕并完成请求,就可以这样做。
    2. 此外,要创建依赖于“util”模块的“app”模块的jar文件,同时定位在app目录中,而不是在将创建它们的ROOT目录中。我希望这个罐子与“组合”瓶子不同。例如,不要包含“util”中的所有文件。
    3. 注意:当我在插件中添加依赖项或资源路径时,如下所示,它不起作用。

                  <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>build-helper-maven-plugin</artifactId>
                  <executions>
                      <execution>
                          <id>add-source</id>
                          <phase>generate-sources</phase>
                          <goals>
                              <goal>add-source</goal>
                          </goals>
                          <configuration>
                              <sources>
                                  <source>${basedir}/../pathToNeededClassFiles</source>
                              </sources>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
      

      在我的项目上运行 mvn package -pl :app

      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building app 1.0
      [INFO] ------------------------------------------------------------------------
      Downloading: https://repo.maven.apache.org/maven2/ com/xyz/multi-app/1.0/multi-app-1.0.pom
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 5.110 s
      [INFO] Finished at: 2017-01-11T11:29:27-07:00
      [INFO] Final Memory: 11M/148M
      [INFO]
      
      [ERROR] Failed to execute goal on project app: Could not resolve dependencies for project com.xyz:app:jar:1.0: 
      Failed to collect dependencies at com.xyz:util:jar:1.0: Failed to read artifact descriptor for com.xyz:util:jar:1.0: 
      Could not find artifact com.xyz:multi-app:pom:1.0: in central (https://repo.maven.apache.org/maven2) -> [Help 1]
      

      任何建议都将不胜感激。感谢

0 个答案:

没有答案