我必须使用Maven for PHP构建一个具有多个模块的应用程序。 maven似乎不起作用的场景是这样的:我有一个通用模块和一个客户端模块,具体取决于第一个模块。 在依赖于公共模块的客户端模块上执行“mvn test”时,测试无法看到公共模块的路径。我的构建中是否有流程或者这是不可能的?
我附上了我的pom.xml文件。
的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample</groupId>
<artifactId>my-app_package</artifactId>
<packaging>pom</packaging>
<name>Sample PHP Maven multi module project</name>
<version>1.0-SNAPSHOT</version>
<modules>
<module>common-module</module>
<module>client1-module</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.phpmaven</groupId>
<artifactId>maven-php-plugin</artifactId>
<extensions>true</extensions>
<version>1.0</version>
<configuration>
<ignoreValidate>true</ignoreValidate>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.phpunit</groupId>
<artifactId>phpunit5</artifactId>
<version>3.3.9</version>
<scope>test</scope>
</dependency>
</dependencies>
<reporting>
<plugins>
<plugin>
<groupId>org.phpmaven</groupId>
<artifactId>maven-php-plugin</artifactId>
<version>1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</project>
共模块/ pom.xml的
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample</groupId>
<artifactId>my-app</artifactId>
<packaging>php</packaging>
<name>Client1 module</name>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.phpmaven</groupId>
<artifactId>maven-php-plugin</artifactId>
<extensions>true</extensions>
<version>1.0</version>
<configuration>
<ignoreValidate>true</ignoreValidate>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.sample</groupId>
<artifactId>common-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.phpunit</groupId>
<artifactId>phpunit5</artifactId>
<version>3.3.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
共模块/ pom.xml的
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample</groupId>
<artifactId>common-module</artifactId>
<packaging>php</packaging>
<name>Common module</name>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.phpmaven</groupId>
<artifactId>maven-php-plugin</artifactId>
<extensions>true</extensions>
<version>1.0</version>
<configuration>
<ignoreValidate>true</ignoreValidate>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.phpunit</groupId>
<artifactId>phpunit5</artifactId>
<version>3.3.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
答案 0 :(得分:1)
是否可以使用Maven for PHP构建多模块结构?
要严格回答这个问题,我很确定这是可能的。但是为此,你应该从父项目启动maven并运行一个所谓的“多模块构建”,这不是你正在做的事情。
我的理解是你有这样的东西:
myproject |-- common | `-- pom.xml |-- client | `-- pom.xml `-- pom.xml <-- run maven from here for a multi-modules build
但说实话,你问题的某些部分尚不清楚。例如,你是什么意思“测试无法看到通用模块的路径”?另外,为什么要运行mvn site
而不是说mvn install
?生成站点不是运行构建的最常用方法。这真的是你想要的吗?
答案 1 :(得分:0)
它有效,你只需要在尝试构建依赖于该模块的模块之前安装依赖模块。否则就找不到了。