如何在不依赖项目的情况下解析 Maven pom 中工件的路径?
How to resolve the path to an artifact in a maven pom without being a project dependency?
我想知道是否可以在不将该工件作为项目依赖项的情况下解析 Maven 工件的路径?
我想做的是通过 exec-maven-plugin 或 maven-antrun-plugin 执行外部 java 代码生成器:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar ${de.powerstat.fb:generator:1.0-SNAPSHOT}</argument>
<argument>de.powerstat.fb.generator.CodeGenerator</argument>
<argument>${fb.hostname}</argument>
<argument>${fb.port}</argument>
<argument>${fb.username}</argument>
<argument>${fb.password}</argument>
<argument>${project.build.directory}</argument>
</arguments>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
所以这里的重点是如何解决 ${de.powerstat.fb:generator:1.0-SNAPSHOT}
的 jars 路径而不将其作为整个项目的依赖项?同样使用 exec:java
目标也不是解决方案,因为这个目标似乎有不同的问题,但那是 another question.
使用antrun插件我遇到了同样的问题:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<target>
<java fork="true" failonerror="true" module="de.powerstat.fb.generator" modulepath="${de.powerstat.fb:generator:1.0-SNAPSHOT}">
<arg value="${fb.hostname} ${fb.port} ${fb.username} ${fb.password} ${project.build.directory}"/>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
所以问题又是如何解决 modulepath="${de.powerstat.fb:generator:1.0-SNAPSHOT}"
?
使用目标为 dependency:properties
的 maven 依赖插件的解决方案在这种情况下不起作用。
我建议使用 dependency:copy
将 JAR 复制到 /target
中的某个地方。然后你可以将该路径添加到 antrun 或 exec 插件。
我想知道是否可以在不将该工件作为项目依赖项的情况下解析 Maven 工件的路径?
我想做的是通过 exec-maven-plugin 或 maven-antrun-plugin 执行外部 java 代码生成器:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar ${de.powerstat.fb:generator:1.0-SNAPSHOT}</argument>
<argument>de.powerstat.fb.generator.CodeGenerator</argument>
<argument>${fb.hostname}</argument>
<argument>${fb.port}</argument>
<argument>${fb.username}</argument>
<argument>${fb.password}</argument>
<argument>${project.build.directory}</argument>
</arguments>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
所以这里的重点是如何解决 ${de.powerstat.fb:generator:1.0-SNAPSHOT}
的 jars 路径而不将其作为整个项目的依赖项?同样使用 exec:java
目标也不是解决方案,因为这个目标似乎有不同的问题,但那是 another question.
使用antrun插件我遇到了同样的问题:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<target>
<java fork="true" failonerror="true" module="de.powerstat.fb.generator" modulepath="${de.powerstat.fb:generator:1.0-SNAPSHOT}">
<arg value="${fb.hostname} ${fb.port} ${fb.username} ${fb.password} ${project.build.directory}"/>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
所以问题又是如何解决 modulepath="${de.powerstat.fb:generator:1.0-SNAPSHOT}"
?
使用目标为 dependency:properties
的 maven 依赖插件的解决方案在这种情况下不起作用。
我建议使用 dependency:copy
将 JAR 复制到 /target
中的某个地方。然后你可以将该路径添加到 antrun 或 exec 插件。