【问题标题】:Build RPM or Deb or Both file through maven build通过 maven build 构建 RPM 或 Deb 或 Both 文件
【发布时间】:2015-01-21 07:14:20
【问题描述】:

我想根据相关操作系统从 Maven 项目文件创建操作系统包。该软件包可能是 RPM 、 Deb 或其他。对于 Deb 包,这可以通过 jdeb 插件来完成。

【问题讨论】:

    标签: plugins debian rpm setup-deployment


    【解决方案1】:

    我们可以使用 pom.xml 中的配置文件从 deb 或 rpm 创建文件之一。配置文件结构如下:-

    <profiles>
        <profile>
            <id>rpm</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <build>
                <finalName>Finalname</finalName>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-war-plugin</artifactId>
                            <version>2.1.1</version>
                        </plugin>
                        <plugin>
                            <groupId>com.springsource.bundlor</groupId>
                            <artifactId>com.springsource.bundlor.maven</artifactId>
                            <version>1.0.0.M1B</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <inherited>false</inherited>
                            <configuration>
                                <descriptorRefs>
                                    <descriptorRef>project</descriptorRef>
                                </descriptorRefs>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <version>2.3.1</version>
                        <configuration>
                            <webResources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <filtering>false</filtering>
                                </resource>
                                <resource>
                                    <directory>src/main/java</directory>
                                    <filtering>true</filtering>
                                </resource>
                                <resource>
                                    <!-- this is relative to the pom.xml directory -->
                                    <directory>src/test/java</directory>
                                    <!-- <excludes> <exclude>**/*Test.java</exclude> <exclude>**/*AllTests.java</exclude> 
                                        <exclude>**/*.java</exclude> </excludes> -->
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/*.java</include>
                            </includes>
                            <redirectTestOutputToFile>true</redirectTestOutputToFile>
                            <printSummary>true</printSummary>
                            <useFile>true</useFile>
                            <forkMode>pertest</forkMode>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>
                                        org.springframework.batch.core.launch.support.CommandLineJobRunner
                                    </mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>rpm-maven-plugin</artifactId>
                        <version>2.0.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <id>package-development</id>
                                <goals>
                                    <goal>rpm</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <copyright>No body</copyright>
                            <group>Development</group>
                            <description>MavenRecipe:RPMPackage.</description>
                            <mappings>
                                <mapping>
                                    <directory>/opt/tomcat/webapps/${project.build.finalName}</directory>
                                    <sources>
                                        <source>
                                            <location>target/${project.build.finalName}</location>
                                        </source>
                                    </sources>
                                </mapping>
                            </mappings>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>deb</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <build>
                <finalName>FinalName</finalName>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-war-plugin</artifactId>
                            <version>2.1.1</version>
                        </plugin>
                        <plugin>
                            <groupId>com.springsource.bundlor</groupId>
                            <artifactId>com.springsource.bundlor.maven</artifactId>
                            <version>1.0.0.M1B</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <inherited>false</inherited>
                            <configuration>
                                <descriptorRefs>
                                    <descriptorRef>project</descriptorRef>
                                </descriptorRefs>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
    
                        <groupId>org.vafer</groupId>
                        <artifactId>jdeb</artifactId>
                        <version>1.0</version>
                        <executions>
                            <execution>
                                <id>deb</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>jdeb</goal>
                                </goals>
                                <configuration>
                                    <verbose>true</verbose>
                                    <deb>target/${project.build.finalName}${project.version}.deb</deb>
                                    <controlDir>/home/dbobra/Workspace/project-workspace/projectname/src/deb/control</controlDir>
                                    <dataSet>
                                        <data>
                                            <src>${project.build.directory}/${project.build.finalName}</src>
                                            <type>directory</type>
                                            <mapper>
                                                <type>perm</type>
                                                <prefix>/home/dbobra/installed/tomcat/webapps/${project.build.finalName}</prefix>
                                            </mapper>
                                        </data>
                                    </dataSet>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
    
                </plugins>
    
            </build>
        </profile>
    

    如果你需要创建你已经用这个命令构建的两个文件 mvn clean install -e 如果您只需要创建 deb 文件,则使用命令 mvn clean install -P '!rpm' -e 如果您只需要创建 rpm 文件,则使用命令 mvn clean install -P '!deb' -e

    希望这些东西能解决你的问题。

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 1970-01-01
      • 2016-09-05
      • 2018-03-02
      • 2018-09-04
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多