如何使用maven构建一个hello world class?

时间:2010-05-15 18:02:23

标签: java maven-2

现在源代码已准备就绪,如何使用maven构建它?

假设源文件为hw.java

我用Google搜索了一段时间,所有解决方案都要求我以固定的方式设置目录。

但我想要做的是将hw.java保留在当前目录(.)中,然后:

vi pom.xml
...
mkdir build
cd build
maven ...

我可以和maven一起享受那种自由吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

  

假设源文件为hw.java

Java中类文件名的错误选择:)

  

我已经google了一段时间,所有的解决方案都要求我以固定的方式设置目录。

并没有真正修复,但“热烈建议”(Maven依赖惯例 - directory layout就是其中之一 - 强烈建议您遵循Maven的约定,如果您决定使用它,减少工作量,减少麻烦) 。

  

但我想要做的是将hw.java保存在当前目录(。)(...)

我认为您至少需要pom.xml下面的目录来存储java源代码。

  

我可以和maven一起享受那种自由吗?

Maven非常灵活,默认 可配置,但您应该使用约定(或Maven以外的其他工具)。我建议使用原型为一个简单的项目创建你的项目:

mvn archetype:generate -B -DgroupId=com.stackoverflow \
                          -DartifactId=Q2841166 \
                          -Dversion=1.0-SNAPSHOT 

然后将您的来源放在src/main/java下(在相应的包中)并运行mvn install


更新:看起来你不明白我在说什么,或者你只是不想听。在这种情况下,您可以随时将build元素修改为the POM reference中的记录(正如我所说,默认不是强制性):

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
    <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
    <outputDirectory>${basedir}/target/classes</outputDirectory>
    <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
    ...
  </build>
</project>

现在,因为不推荐更改这些默认值,因为Maven并不鼓励这样做,因为如果你不处理遗留项目,这是一个坏主意,因为如果你不需要,它是无用的工作,因为这会带来更多的麻烦而不是好处,不要指望找到关于此的“教程”。让我重新说一下:你要求的是一个“如何射击自己的脚”教程,这太荒谬了。

最后一件事:如果Maven没有按照您希望的方式工作,请不要使用Maven,这是我能给您的最佳建议。