Java 从GNUMake迁移到Maven

Java 从GNUMake迁移到Maven,java,maven-2,jflex,jflex-maven-plugin,Java,Maven 2,Jflex,Jflex Maven Plugin,我已经使用makebuild系统很久了,但我已经决定开始学习Maven构建系统。虽然我已经阅读了大多数在线文档,但似乎没有一个能给我提供我想要的类比。我了解系统的生命周期,但是我没有看到一个关于编译步骤依赖关系的参考。例如,我想在编译生命周期步骤中生成JFlex语法。目前,我认为没有办法将该步骤作为预编译阶段的步骤。关于这方面的文档似乎有限。一般来说,步骤依赖性的概念似乎已经融入到Maven中,任何修改都需要一个插件。是这样吗?我遗漏了什么,因为目前Maven构建系统在如何设置编译步骤方面似乎非

我已经使用makebuild系统很久了,但我已经决定开始学习Maven构建系统。虽然我已经阅读了大多数在线文档,但似乎没有一个能给我提供我想要的类比。我了解系统的生命周期,但是我没有看到一个关于编译步骤依赖关系的参考。例如,我想在编译生命周期步骤中生成JFlex语法。目前,我认为没有办法将该步骤作为预编译阶段的步骤。关于这方面的文档似乎有限。一般来说,步骤依赖性的概念似乎已经融入到Maven中,任何修改都需要一个插件。是这样吗?我遗漏了什么,因为目前Maven构建系统在如何设置编译步骤方面似乎非常有限

坦率地说,我认为您当前的思维模式与ant的对应比与maven的对应要好得多,我建议您从这一点开始

你可以在Maven里做任何事。它通常有一个默认的方式来做每件事,然后如果你想做一些特别的事情,你可以挂接并覆盖它。有时需要大量的堆栈溢出和挠头才能弄清楚

甚至还有一位官员

只要有可能,找一个制作了Maven插件的人做你想做的。即使它不是100%正确,它至少可以给你一个如何让maven做某事的想法

最小配置

此配置为src/main/jflex/及其子目录中的所有语法文件(.jflex,*.jlex,*.lex,.flex)生成解析器的java代码。生成的Java源代码的名称和包是语法中定义的名称和包。生成的Java源代码被放置在target/generated source/jflex中,位于遵循Java包名称约定的子目录中。 pom.xml


de.jflex

. 但是Maven完全是倾向于约定而不是配置。

这是否意味着Maven不能添加额外的编译任务?我想我可以把构建步骤放在ant文件中,让mvn运行它。然而,这个解决方案似乎有点难看。我并没有说maven做不到。我说你的心态更接近ant(来自make)而不是maven。哦,很好,正是这个执行目标让它工作起来。我想我需要回去看看这到底是怎么回事。那么插件的钩子就是添加一个执行,并在生命周期中运行?Maven中的EveryThing就是一个插件,即使你看不到它。要想做出改变,第一步是使用一个内置插件,稍微改变一下配置。。。当内置插件不能做任何事情时,你可以使用第三方插件。如果运气不好,你可以自己做:)
<project>
  <!-- ... -->
  <build>
    <plugins>
      <plugin>
        <groupId>de.jflex</groupId>
        <artifactId>jflex-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <!-- ... -->
  </build>
  <!-- ... -->
</project>