当前位置: 首页 > 面试题库 >

在Maven中生成Version.java文件

松骏俊
2023-03-14
问题内容

我有一个使用Ant脚本构建的Java项目。我正在尝试将项目转换为Maven。

其中一项任务将生成一个名为Version.java的Java源文件,其中包含编译时间戳记的静态String表示形式,如下所示:

package com.foo.bar;
public final class Version {
 public static String VERSION="100301.1046";
}

Ant任务非常简单:

<target name="version" depends="init" description="Create Version.java">
    <echo file="src/${package.dir}/Version.java" message="package ${package.name};${line.separator}" />
    <echo file="src/${package.dir}/Version.java" append="true" message="public final class Version {${line.separator}" />
    <echo file="src/${package.dir}/Version.java"
          append="true"
          message=" public static String VERSION=&quot;${buildtime}&quot;;${line.separator}" />
    <echo file="src/${package.dir}/Version.java" append="true" message="}${line.separator}" />
    <echo message="BUILD ${buildtime}" />
</target>

是否可以使用生成源或其他一些简单方法在Maven中执行类似的操作?


问题答案:

经过更多的Google搜索之后,我想到了这个(在pom.xml中):

<plugins>
  ...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <goals>
          <goal>run</goal>
        </goals>
        <phase>generate-sources</phase>
        <configuration>
          <tasks>
            <property name="src.dir" value="${project.build.sourceDirectory}" />
            <property name="package.dir" value="com/foo/bar" />
            <property name="package.name" value="com.foo.bar" />
            <property name="buildtime" value="${maven.build.timestamp}" />

            <echo file="${src.dir}/${package.dir}/Version.java" message="package ${package.name};${line.separator}" />
            <echo file="${src.dir}/${package.dir}/Version.java" append="true" message="public final class Version {${line.separator}" />
            <echo file="${src.dir}/${package.dir}/Version.java" append="true"
              message=" public static String VERSION=&quot;${buildtime}&quot;;${line.separator}" />
            <echo file="${src.dir}/${package.dir}/Version.java" append="true" message="}${line.separator}" />
            <echo message="BUILD ${buildtime}" />
          </tasks>
        </configuration>
      </execution>
    </executions>
  </plugin>
  ...
</plugins>

它看起来运行良好,并生成了以下Java文件:

package com.foo.bar;
public final class Version {
 public static String VERSION="100318.1211";
}


 类似资料:
  • 我正在使用Maven生成一个war文件。我正试图让它在战争中生成一个清单文件。现在它没有发生。我已经在我的pom中包括了以下内容。xml,但我无法让它输出包含该信息的清单文件。有人有什么想法或建议吗?没有舱单。mf被投入战争。

  • 试图从我的构建中提取文件夹,但以下操作不起作用: 有什么想法吗?

  • 问题内容: 当我尝试使用生成Eclipse项目文件时,出现以下错误: 插件管理器中执行目标’org.apache.maven.plugins:maven-eclipse- plugin:2.9-SNAPSHOT:eclipse’的内部错误:无法加载mojo’org.apache.maven.plugins:maven- eclipse-plugin:插件``org .apache.maven.pl

  • 我正在尝试运行maven-expertion-plugin:1 . 26 . 2:docs,并且面临一个NUllPointerException。 我唯一想要的是生成这里描述的文档http://docs.codehaus.org/display/ENUNCIATE/Documentation只有,所以我的pom。xml表示为: 但是,它启动了: 有什么建议吗?

  • 更新: 我在pom.xml中添加了另一个插件。 它生成一个jar文件,但似乎没有依赖项。 线程“main”java.lang.noClassDefFoundError中出现异常:org/apache/log4j/logger

  • 我有一个多模块的maven项目。它有两个多模块 父POM. xml(包装类型:pom) Module1 POM. xml(包装类型:jar) Module2 POM. xml(包装类型:jar) 当我使用mvn构建选项构建pom.xml时,我能够获得所有工件(父pom,子jars)。 但我想要。pom文件(不是pom.xml)也用于子JAR。谁能建议我怎么做? 我尝试在pom中添加依赖项,比如ma