Pau*_*tha 5 java command-line packages maven
[求助] - 但仍在寻找解释.请看问题的底部
我没有太多使用命令行或使用Maven的经验.我正在编写一本书的教程.它声明我应该创建一个java文件
src/main/java/com/effectivemaven/chapter01/ExampleAction.java
Run Code Online (Sandbox Code Playgroud)
我所做的是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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我mvn compile
说compiling 1 file to target...
,当我看到taget目录时,什么都没有创建.
所以我尝试在不使用包的情况下创建另一个.java文件,只是一个简单的
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
从中运行命令 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>
Run Code Online (Sandbox Code Playgroud)
按要求编辑 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>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这是我使用以下命令创建的Web应用程序
mvn archetype-generate -DgroupId=com.underdogdevs.webapp -DartifactId=first-webapp -DarchetypeArtifactid=maven-archetype-webapp
[已解决] - 但具有非常小的理解 - 仍然为任何可以向我解释这种行为的人提供布朗尼点数.以下是我的所作所为
我得到了它的工作.自从我创建项目以来
groupId=com.underdogdevs.webapp
,我尝试创建一个包com\underdogdevs\webapp
并使用相应的包引用创建了一个类.这解决了这个问题.上课了.但我进一步测试了它并删除了我刚刚创建的包并尝试仅使用原始包结构进行清理和编译,但文件在原始包结构中再次出现.我不知道为什么会这样.有人有任何想法吗?
好的,这groupid
与您的应用程序结构无关——它是您的应用程序名称的一部分。您正在构建一个Web应用程序,因此编译后的类将进入WEB-INF/classes
生成的war文件中的目录(根据您的pom,该文件称为first-webapp.war
),可以在该目录中找到该文件target
。您需要目录src/main/java
,,,,, 。src/main/resources
在 java 目录下,您应该放置您的包结构(更多目录),在本例中是放置您的 java 文件。将您的放在项目根目录中。src/test/java
src/test/resources
src/main/webapp/WEB-INF
com/effectivemaven/chapter01
ExampleAction.java
pom
在命令行上运行mvn clean install
,您将生成目标,并且您应该.war
在其中找到您的文件。在该WEB-INF/classes/com/effectivemavem/chapter01
目录下,您将找到带有扩展名的编译后的 java 类.class
。
有时您必须将web.xml
文件放入目录中WEB-INF
。
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |