Python 2.7 Maven命令行:如何将统一的jar文件拆分为两个独立的部分?
以下是上下文:我在两个独立的包中处理2个项目-MAIN和TESTS类。在我唯一的pom.xml文件(与主类位于同一个包中)中,我使用以下插件和目标添加了测试文件:Python 2.7 Maven命令行:如何将统一的jar文件拆分为两个独立的部分?,python-2.7,maven,intellij-idea,jar,Python 2.7,Maven,Intellij Idea,Jar,以下是上下文:我在两个独立的包中处理2个项目-MAIN和TESTS类。在我唯一的pom.xml文件(与主类位于同一个包中)中,我使用以下插件和目标添加了测试文件: 构建helpermaven插件&添加源代码-并添加测试文件路径的路径 maven资源插件和复制资源 maven汇编插件&单个 到目前为止,我成功地在python脚本中构建了1个jar文件,在3个命名插件和一个pom文件的帮助下,该文件包含MAIN和测试,其中测试作为资源添加。 我的目标是从我刚刚构建的jar文件中构建两个独立的ja
- 构建helpermaven插件&添加源代码-并添加测试文件路径的路径
- maven资源插件和复制资源
- maven汇编插件&单个
<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>
<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!");
}
}
<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());
}
}
父模块的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>
<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!");
}
}
<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());
}
}
第二个子模块的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>
<!-- 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>
<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!");
}
}
<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());
}
}
结果:
<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>
<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!");
}
}
<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());
}
}
<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>
<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!");
}
}
<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());
}
}
<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>
任何建议都将不胜感激。谢谢在我看来,你用这些插件把项目复杂化了。根据你的文件夹结构,它应该已经开箱即用,而不需要添加这三个插件。如果你添加了,谢谢你的回答。但是,这对我是有效的。我正在进行的项目是按照我试图在上面解释的方式设计的:2个独立的包。到目前为止,所有的测试类都需要运行主类。移动测试类将不再尊重固有的设计——我不允许修改它,除了添加xml文件和脚本。另一方面,我尝试了这个例子:(在“如何一次构建多个项目?”一节中),但没有成功。在尝试我之前评论的链接中给出的多模块方法时,我得到了这些[WARNING]&[ERROR]在为appGrId:appGrId:jar:1.0.1构建有效模型时遇到了一些问题[警告]“org.codehaus.mojo:build helper maven插件”的“build.plugins.plugin.version”丢失。@第69行第12列[错误]反应器中的项目包含一个循环引用:“Vertex{label='appGrId:appTests:1.0.1'}”和“Vertex{label='appGrId:app:1.0.1'}之间的边”'介绍在图形中循环appGrId:app:1.0.1-->appGrId:appTests:1.0.1-->appGrId:app:1.0.1@此外,该示例中的问题是考虑的两个项目-app和wep app-它们都有一个主类。而在我的示例中,测试没有主类。您可以共享您的项目吗?或者有一个可下载的简化示例吗?