【发布时间】:2014-01-31 01:58:56
【问题描述】:
[ 已解决 ] - 但仍在寻找解释。请参阅问题底部
我对命令行或 Maven 没有太多经验。我正在写一本书的教程。它声明我应该创建一个 java 文件
src/main/java/com/effectivemaven/chapter01/ExampleAction.java
我所做的是mkdir分别为每个目录,即mkdir com、mkdir effectivemaven、mkdir chapter01
我在chapter01 目录中创建了.java 文件。
package com.effectivemaven.chapter01;
import org.slf4j.*;
public class ExampleAction {
final Logger logger = LoggerFactory.getLogger(ExampleAction.class);
public boolean execute() {
logger.info( "Example Action Executed." );
return true;
}
}
当我mvn compile 时,它显示compiling 1 file to target...,但是当我查看taget 目录时,没有创建任何内容。
所以我尝试在不使用包的情况下创建另一个 .java 文件,只是一个简单的
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
在java 目录中,然后是mvn compile,它会显示在target 文件中。
所以我的假设是我没有使用 mkdir 正确创建包,或者我可能在做其他我不知道的错误。
所以基本上我只想知道,从命令行创建包的正确方法是什么?如果我做得正确,
.class没有在target中创建的其他可能原因是什么?
编辑树
first-webapp
src
main
java
Hello.java
com
effectivemaven
chapter01
ExampleAction.java
target
classes
Hello.class
pom.xml
从C:\Maven Book\first-webapp> 运行的命令
C:\Maven Book\first-webapp>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building first-webapp Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ first-weba
pp ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ first-webapp
---
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b
uild is platform dependent!
[INFO] Compiling 2 source files to C:\Maven Book\first-webapp\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.667s
[INFO] Finished at: Sun Jan 12 00:09:49 PST 2014
[INFO] Final Memory: 11M/111M
[INFO] ------------------------------------------------------------------------
C:\Maven Book\first-webapp>
根据要求编辑 pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.underdogdevs.webapp</groupId>
<artifactId>first-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>first-webapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
<build>
<finalName>first-webapp</finalName>
</build>
</project>
顺便说一下,这是我使用以下命令创建的网络应用
mvn archetype-generate -DgroupId=com.underdogdevs.webapp -DartifactId=first-webapp -DarchetypeArtifactid=maven-archetype-webapp
[ 已解决 ] - 但理解非常有限 - 仍然为任何可以向我解释这种行为的人提供布朗尼积分。以下是我所做的
我让它工作了。由于我使用
groupId=com.underdogdevs.webapp创建项目,因此我尝试制作一个包com\underdogdevs\webapp并创建一个具有相应包引用的类。这解决了问题。班级出现。但是我进一步测试并删除了我刚刚创建的包并尝试仅使用原始包结构进行清理和编译,但该文件再次出现在原始包结构中。我不知道为什么会发生这种情况。有人有什么想法吗?
【问题讨论】:
-
你能从项目的根目录显示
tree或类似的输出和ls -la target/的输出吗? -
你在运行 maven 时应该会收到一条错误消息。
-
软件包只是目录,您可以查看更多信息 [这里][1] [1]:stackoverflow.com/questions/10971838/…
-
@JoopEggen 相同的结果,仍然没有创建
.class文件或包树 -
@drorb 我让它工作了。由于我使用
groupId=com.underdogdevs.webapp创建项目,因此我尝试制作一个包com\underdogdevs\webapp并创建一个具有相应包引用的类。这解决了问题。班级出现。但我进一步测试并删除了我刚刚创建的包并尝试清理和编译,但该文件再次出现在原始包结构中。我不知道为什么会发生这种情况。有什么想法吗?
标签: java maven command-line packages