我已经使用Maven原型(webapp-javaee6
)创建了一个新的Java EE
6项目,但是不明白为什么某些东西放在build
POM元素中。具体来说,我不明白为什么将“” javaee-endorsed- api.jar
复制到认可目录。根据对这个问题的回答,这是编译所必需的,但是当我删除下的相关plugin
元素时,我的项目可以正常编译build
。
由于javax:javaee-web-api
已在POM中作为依赖项提供,因此不能将其用于编译吗?
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
它应该编译,因为对此工件也有依赖性:
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Maven手册页中 提供的 描述如下:
这很像编译,但是表明您希望JDK或容器在运行时提供依赖项。例如,在为Java Enterprise
Edition构建Web应用程序时,您将对Servlet API和相关Java EE
API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。
因此,我认为复制此依赖项不会影响编译。
但是原型的作者出于某种原因希望将Java EE 6
API包复制到认可的目录中。如果您决定启动Jetty服务器并在“测试阶段”中进行一些测试(例如,使用JUnit),这可能会有所帮助。
如果您不使用它-只需将其删除。
问题内容: 我试图弄清楚Maven的用途,并且有很多文章介绍了Maven的功能和用途。但是我只是不能从生产力的角度理解Maven的实际使用。 从我在学校项目中所习惯的,就是在Eclipse中创建一个新的Java项目,编写您的代码,创建一个.war(如果基于Web),然后将代码粘贴到Tomcat的webapps文件夹中并启动服务器! 所以, Maven在哪里出现?我已经使用过Ant,并且了解Ants
我正在创建一个maven原型。在这里,我有一个原型项目,当用户调用以下命令时,它会为用户创建: MVN原型:生成-DArchetypeGroupId=xxx-DArchetypeArtifactId=Archtype-yyyy-DArchetypeVersion=1.1.0-S5-SNAPSHOT-DgroupId=zzz-DartifactId=pro11 在prototype pom中,我想使
问题内容: “ Maven->更新项目… ”在Eclipse中做什么? 问题答案: 它将Eclipse项目设置与pom的设置同步。例如,如果您更改重要的插件设置(例如输出的Java版本),则会发现Eclipse将要求您更新项目,此后,项目中已配置的Java运行时将进行更改以反映您的Maven pom所指示的内容。 这是要记住的重要事项:Maven pom是这种项目设置的领导者。如果要更改设置,请尝
问题内容: 我想将jaxws升级到2.2(jdk1.6与jaxws 2.1捆绑在一起)。我的jdk是(我没有安装public jre): 在jaxws自己的文档中,他们解释了如何做到这一点: 解决此问题的一种方法是将jaxws-api.jar和jaxb-api.jar复制到JRE认可的目录中,即 但是我不确定这对我的安装是否有任何影响。对于初学者,我只定义了。而且文件夹不存在,所以我创建并复制了两
我在父POM中声明 此外,儿童pom使用 一切正常吗?但是当我在type = pom中使用这种依赖关系时 我有错误 如何在dependencyManagement中用type = POM $ { Jboss-javaee-7.0 . version }声明一个依赖项如果我在根中带有Jboss-javaee-7.0,那么运行