Maven:如何打包部署main()方法执行生成的输出文件?
Maven: How to package and deploy output files generated by main() method execution?
我有一个 Maven 项目,它使用 exec-maven-plugin
通过 main 方法执行 class,这会在目标目录中生成一个输出文件。配置如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>process-execution</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.MainClass</mainClass>
<systemProperties>
<systemProperty>
<key>INPUT_FILE_PATH</key>
<value>${basedir}/src/main/resources/input_file.csv</value>
</systemProperty>
<systemProperty>
<key>OUTPUT_FILE_PATH</key>
<value>${project.build.directory}/output_file.json</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
我希望能够将此输出文件 (output_file.json)
作为一个单独的 jar 与项目 classes.[=14 构建的标准 jar 文件一起打包并部署到包存储库=]
有办法做到这一点吗?也许与 maven-assembly-plugin
?
是的,您可以使用 maven-assembly-plugin 安装和部署额外的工件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-distribution</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/descriptor.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
这意味着根据 "descriptor.xml" 创建、安装和部署了一个额外的工件。文件"descriptor.xml"定义了应该打包的目录:
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd"
>
<id>json</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>/target/deploy/json</directory>
</fileSet>
</fileSets>
</assembly>
我有一个 Maven 项目,它使用 exec-maven-plugin
通过 main 方法执行 class,这会在目标目录中生成一个输出文件。配置如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>process-execution</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.MainClass</mainClass>
<systemProperties>
<systemProperty>
<key>INPUT_FILE_PATH</key>
<value>${basedir}/src/main/resources/input_file.csv</value>
</systemProperty>
<systemProperty>
<key>OUTPUT_FILE_PATH</key>
<value>${project.build.directory}/output_file.json</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
我希望能够将此输出文件 (output_file.json)
作为一个单独的 jar 与项目 classes.[=14 构建的标准 jar 文件一起打包并部署到包存储库=]
有办法做到这一点吗?也许与 maven-assembly-plugin
?
是的,您可以使用 maven-assembly-plugin 安装和部署额外的工件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-distribution</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/descriptor.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
这意味着根据 "descriptor.xml" 创建、安装和部署了一个额外的工件。文件"descriptor.xml"定义了应该打包的目录:
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd"
>
<id>json</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>/target/deploy/json</directory>
</fileSet>
</fileSets>
</assembly>