Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客

Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客

Maven问题总结 - 3

2010-09-03 13:29:32

标签:maven

Maven问题总结 - 3

http://tianya23.blog.51cto.com/1081650/289363
http://tianya23.blog.51cto.com/1081650/364072
maven安装:http://b2b-doc.alibaba-inc.com/display/opentech/Maven
私服中release版本的plugin的位置:http://repo.alibaba-inc.com/mvn/internal/releases/com/alibaba/maven/plugins/
私服的plugin是不受限制的,所以和外面的使用方式是一样的, 可以直接google或者参考其他项目的pom
<parent>
        <groupId>com.alibaba</groupId>
        <artifactId>pampas</artifactId>
        <version>3-RC1</version>
</parent>
37、

多模块项目中如何在其中某几个模块上执行命令?

 
有时候我们需要在 一堆子模块中的其中某几个上执行特定的命令,我们可以用reactor插件完成。maven 2.1开始吧这个功能简化到了命令行上。
 
 实例1 - 在指定某个模块 上执行eclipse:eclipse
 mvn -pl biz/album -am -amd eclipse:eclipse

 解释:
  -pl 可以指定你需要执行命令的模块,以","分割。
  -am 意思是:如果该模块依赖了同一个大项目下的其他的模块,也一并加入到reactor列表来执行后面的命令。
  -amd 意思是:如果有依赖该模块的其他模块,也一并加入到reactor列表来执行后面的命令。 
详细历史渊源参见: http://jira.codehaus.org/browse/MNG-2576

38、

 

不能编译使用了Sun私有API的代码

 
Maven + JDK6 如果碰到代码使用废弃的或者sun内部的API,会编译失败。此问题源于plexus中的compiler模块不能正确的处理javac输出的中文警告信息。


解决办法是用我们修正过的插件:
POM中配置。
 

<plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-compiler-plugin</artifactId>         <version>2.3.1</version>         <configuration>             <optimize>true</optimize>         </configuration>         <dependencies>             <dependency>                 <groupId>org.codehaus.plexus</groupId>                 <artifactId>plexus-compiler-javac</artifactId>                 <version>1.8.1-patch</version>             </dependency>         </dependencies>     </plugin> 

39、

手动安装jar文件

the install command

http://maven.apache.org/plugins/maven-install-plugin/usage.html
mvn install:install-file -Dfile=your-artifact-1.0.jar \[-DpomFile=your-pom.xml] \[-DgroupId=org.some.group] \[-DartifactId=your-artifact] \[-Dversion=1.0] \[-Dpackaging=jar] \[-Dclassifier=sources] \[-DgeneratePom=true][-DcreateChecksum=true]

the deploy command

http://maven.apache.org/plugins/maven-deploy-plugin/usage.html
mvn deploy:deploy-file -Durl=file://C:\m2-repo \-DrepositoryId=some.id \-Dfile=your-artifact-1.0.jar \[-DpomFile=your-pom.xml] \[-DgroupId=org.some.group] \[-DartifactId=your-artifact] \[-Dversion=1.0] \[-Dpackaging=jar] \[-Dclassifier=test] \[-DgeneratePom=true] \[-DgeneratePom.description="My Project Description"] \[-DrepositoryLayout=legacy] \[-DuniqueVersion=false]

sample - memcached client jar

mvn install:install-file-Dfile=java_memcached-release_2.0.1.jar-DgroupId=com.alibaba.com.danga-DartifactId=memcached-Dversion=2.0.1-Dpackaging=jar-DgeneratePom=true

sample - c3p0

mvn deploy:deploy-file-Dpackaging=jar-DgeneratePom=true-DgroupId=com.alibaba.com.mchange-DartifactId=v2.c3p0-Dversion=0.9.1.2.osgi-Dfile=com.alibaba.com.mchange.v2.c3p0-0.9.1.2.osgi.jar-Durl=file://any_vaild_url_for_remote_server-DrepositoryId=some.id

sample - spring-javamail - 1.4.0

mvn deploy:deploy-file-DgroupId=com.springsource.javax.mail-DartifactId=mail-Dversion=1.4.0.osgi-Dpackaging=jar-Dfile=to_local_jar-Durl=dav:http://platoo.alibaba-inc.com/mvn/internal/releases-DrepositoryId=platoo-maven-server

sample - spring-activation - 1.1.0

mvn deploy:deploy-file-DgroupId=com.springsource.javax.activation-DartifactId=activation-Dversion=1.1.0.osgi-Dpackaging=jar-Dfile=to_local_jar_file-Durl=dav:http://platoo.alibaba-inc.com/mvn/internal/releases-DrepositoryId=platoo-maven-server

b2b.commons.fasttext

 mvn deploy:deploy-file -Durl=dav:http://repo.alibaba-inc.com/mvn/internal/releases -DrepositoryId=b2b.repo.server -DgroupId=com.alibaba.b2b.commons -DartifactId=fasttext -Dversion=1.2-090401 -Dpackaging=jar -Dfile=to_local_jar_file
mvn deploy:deploy-file -Durl=dav:http://repo.alibaba-inc.com/mvn/internal/releases -DrepositoryId=b2b.repo.server -DgroupId=com.alibaba.b2b.commons -Dartifa

40、

SpringMaven Repos

 
Spring Portfolio Release Repository
Identifier     spring-release
Name     Spring Portfolio Release Repository
URL     http://maven.springframework.org/release
Type     Maven 2.x Repository
Spring Portfolio Milestone Repository
Identifier     spring-milestone
Name     Spring Portfolio Milestone Repository
URL     http://maven.springframework.org/milestone
Type     Maven 2.x Repository
Spring Portfolio External Repository
Identifier     spring-external
Name     Spring Portfolio External Repository
URL     http://maven.springframework.org/external
Type     Maven 2.x Repository
Spring External Dependencies Repository
Identifier     spring-ext
Name     Spring External Dependencies Repository
URL     http://springframework.svn.sourceforge.net/svnroot/springframework/repos/repo-ext/
Type     Maven 2.x Repository
i21 osgi artifacts repo with SNAPSHOTS!!!
Identifier     i21-s3-osgi-repo
Name     i21 osgi artifacts repo with SNAPSHOTS!!!
URL     http://maven.springframework.org/osgi
Type     Maven 2.x Repository
41、

将Maven2项目转为MyEclipse项目

现在项目中,大家开始用jetty。它不用像在MyEclipse中使用Tomcat那样要部署,也不用像在Tomcat中那样,要把应用都放到webapp文件夹下。jetty可以直接用你的项目的目录结构。
我们在用maven的时候,应该用maven标准的目录结构。由于jetty可以直接用你的项目的目录结构,所以jetty可以和maven很好的结合。

当然我们也可以使用Tomcat,并且也可以用MyEclipse进行部署。需要按照以下几步:

简要步骤如下: 
0. 为eclipse添加Maven2和MyEclipse插件 
1. 将Maven项目转为Eclipse项目,具体操作为将dos命令窗口切换到Maven项目的目录下,输入命令: mvn eclipse:eclipse 
2. 进入eclipse,将这个项目导入工作空间 
3. 在该项目上点右键Maven->Enable 
4. 在该项目上点右键Build Path->Configure Build Path->Java Build Path->Libraries->去掉Maven添加的变量路径 
5. 在该项目上点右键MyEclipse->Add Web Capabilities->修改Web root地址(点【浏览】按钮指定为当前工作空间下的src/main/webapp文件夹) 
6. 配置完毕,可以用MyEclipse插件配置服务器等开始正常开发,自动部署,调试等操作了。

42、Maven各阶段使用的插件

43、Jetty配置

在插件位置配置jetty, 在配置的时候也可以不指定插件的版本, 默认使用
<plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.9</version>
      </plugin>

jetty->请求的操作无法在使用用户映射区域打开的文件上执行

jetty\etc\webdefault.xml中

Java代码 
  1. <init-param>
  2. <param-name>useFileMappedBuffer</param-name>
  3. <param-value>true</param-value> <!-- 将这个值设为 false -->
  4. </init-param>

原贴http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows

或者在web.xml中插入如下信息:

  1. <servlet>
  2. <servlet-name>default</servlet-name>
  3. <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
  4. <init-param>
  5. <param-name>useFileMappedBuffer</param-name>
  6. <param-value>false</param-value>
  7. </init-param>
  8. <load-on-startup>0</load-on-startup>
  9. </servlet>

44、Maven实现远程拷贝

用maven管理多个工程或者模块,不可避免的要用她的deploy/deploy-file功能,其基本用法在此不再累赘,请参考maven.apache.org/plugins/maven-deploy-plugin/usage.html
  maven支持多种发布协议(URL),如下

  • file:  格式是file://path to repository,是最简单最易用的一种,可惜只能在本机上进行发布
  • scp:  格式scp://host/path to repository,是安全文件拷贝的方式,也是maven介绍最多的一种,可惜牵扯到privateKey等问题,到现在还没有搞定 :(
  • scpexe: 格式scpexe://host/path to repository,和scp基本类似,不过在这里不是用maven自带的scp处理,而是利用外部的scp命令进行copy,结合ssh的基本信息,尝试成功了 :)
  • ftp:  格式ftp://host/path to repository,采用ftp协议的方式进行上传,不过需要扩展插件:wagon-ftp,及相关的common-net等

下边说说不需要密码的scpexe处理方式,其实其根本还是ssh相关的知识。其步骤如下

  1. 在客户机上生成key,

    sql 代码
    1. ssh-keygen -t rsa -f $HOME/.ssh/id_rsa -P ''
  2. 传送 $HOME/.ssh/id_rsa.pub到服务器主机上
  3. 在服务器用户创建authorized_keys
    sql 代码
    1. $Snbsp;cat id_rsa.pub >> $HOME/.ssh/authorized_keys2
    2. $Snbsp;chmod 0600 $HOME/.ssh/authorized_keys2
    3. $Snbsp;cd $HOME/.ssh && ln -s authorized_keys2 authorized_keys
  4. 用mvn deploy测试或者用ssh user@host测试

以上操作我在debian linux下边成功

45、Maven命令补充

(1)产生项目原文件输入:mvn source:jar

(2)项目生成 java doc

mvn package  -Dtest javadoc:javadoc -DfailIfNoTests=false

mvn package  -Dtest -DfailIfNoTests=false

mvn -U -Dtest clean package assembly:assembly  -DfailIfNoTests=false

忽略测试-DfailIfNoTests=false

46、Maven Plugin地址

Maven官方插件:http://maven.apache.org/maven-1.x/plugins/bundled/
第三方插件:http://maven.apache.org/maven-1.x/plugins/3rdparty.html
Sandbox插件:http://maven.apache.org/maven-1.x/plugins/sandbox/
47、Maven与Clover集成总结,license问题


在maven项目的pom.xml中加入Clover的plugin,如下:

Java代码 
  1. <plugin>
  2. <artifactId>maven-clover-plugin</artifactId>
  3. <groupId>com.atlassian.maven.plugins</groupId>
  4. <configuration>
  5. <licenseLocation>${clover.licenseLocation}</licenseLocation>
  6. <targetPercentage>50%</targetPercentage>
  7. </configuration>
  8. </plugin>

此处的clover.licenseLocation是指Maven安装后本地repository配置目录的settings.xml中licenseLocation的位置.Maven的本地repository一般是在windows用户目录下 
,(这个licenseLocation中不可以指定成C:/clover.license的样式,Maven找不到这个格式的地址,这个地方是个trap.)如C:\Documents and Settings\user\.m2中,在这个全局settings中需要配置clover的license的东西,具体是在profile节点中配置,设置如下

Java代码 
  1. <profiles>
  2. <profile>
  3. <id>myprofile</id>
  4. <activation>
  5. <activeByDefault>true</activeByDefault>
  6. </activation>
  7. <properties>
  8. <clover.licenseLocation>C:/clover.license</clover.licenseLocation>
  9. </properties>
  10. <pluginRepositories>
  11. <pluginRepository>
  12. <id>atlassian-m2-repository</id>
  13. <name>Atlassian Maven 2.x Repository</name>
  14. <url>http://repository.atlassian.com/maven2</url>
  15. </pluginRepository>
  16. </pluginRepositories>
  17. </profile>
  18. </profiles>

48、让Maven正确处理javac警告

http://www.juvenxu.com/2010/09/01/maven-javac-warning/
现象:如果你用maven编译项目,而且在项目中用了SUN的专用API,你会得到警告信息,然后Maven会报告编译失败,像这个样子:


[ERROR] \workspaces\mvn\javac-warning-test\src\main\java\com\juvenxu\TestJavacWarning.java:[7,32] 警告:sun.misc.BASE64Decoder 是 Sun 的专用
API,可能会在未来版本中删除
[INFO] ————————————————————-
[INFO] BUILD FAILURE

这当然是不合理的,javac只是警告而已,maven凭什么就直接报失败呢?

maven-compiler-plugin 2.3.2 发布了,因此只需要配置使用该版本就ok了
view plaincopy to clipboardprint?
  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-compiler-plugin</artifactId>
  4. <version>2.3.2</version>
  5. </plugin>

49、按照要求生成编译后的名字 - finalName

我们已经通过在项目的构建配置中加入 finalName 元素来自定义这个生成的
WAR 文件的名称。根据 simple-webapp 的 finalName ,package 阶段生成的 WAR 文件
为 target/simple-webapp.war 。
  1. <build>
  2. <finalName>JtlParser</finalName> 
  3. </build>

50、为打包的jar文件指定main方法的类

这样就可以直接用java -jar JtlParser.jar执行里面的main方法了.
手工的方法也可以参考:http://jimjun2003.blog.163.com/blog/static/86730756200871210281370/
  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-jar-plugin</artifactId>
  4. <configuration>
  5. <archive>
  6. <manifest>
  7. <mainClass>com.alibaba.jmeter.JTLParser</mainClass>
  8. </manifest>
  9. </archive>
  10. </configuration>
  11. </plugin>

为jar或assembly jar指定main方法

  1. <build>
  2. <finalName>demo02.client</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.apache.maven.plugins</groupId>
  6. <artifactId>maven-jar-plugin</artifactId>
  7. <configuration>
  8. <archive>
  9. <manifest>
  10. <mainClass>lavasoft.suths.service.client.Client</mainClass>
  11. </manifest>
  12. </archive>
  13. </configuration>
  14. </plugin>
  15. <plugin>
  16. <artifactId>maven-assembly-plugin</artifactId>
  17. <configuration>
  18. <descriptorRefs>
  19. <descriptorRef>jar-with-dependencies</descriptorRef>
  20. </descriptorRefs>
  21. <archive>
  22. <manifest>
  23. <mainClass>lavasoft.suths.service.client.Client</mainClass>
  24. </manifest>
  25. </archive>
  26. </configuration>
  27. </plugin>
  28. </plugins>
  29. </build>

jar为:demo02.client.jar

assembly jar为:demo02.client-jar-with-dependencies.jar

运行:

  1. D:\code.temp\demo02.client\target>java -jar demo02.client-jar-with-dependencies.jar
  2. welcome you, Hessian, from remote!

assembly生成的jar中可能存在重复的文件情况,这是maven版本的问题,参考:http://www.wsria.com/archives/958。 解决方案如下:

  1. <plugin>
  2. <artifactId>maven-assembly-plugin</artifactId>
  3. <version>2.2-beta-5</version>
  4. <configuration>
  5. <descriptorRefs>
  6. <descriptorRef>jar-with-dependencies</descriptorRef>
  7. </descriptorRefs>
  8. </configuration>
  9. </plugin>

51、超级POM

所有的Maven项目的POM都扩展自超级POM。超级POM定义了一组被所有项目共享的默认设置。它是Maven安
装的一部分,可以在/usr/local/maven/lib中的maven-2.0.9-uber.jar文件中找到。如果你看一下这个JAR文件,你会看到在包org.apache.maven.project下看到一个名为pom-4.0.0.xml的文件。

默认的超级POM定义了一个单独的远程Maven仓库,ID为central。这是所有Maven客户端默认配置访问的中央Maven仓库。该配置可以通过一个自定义的settings.xml文件来覆盖。注意这个默认的超级POM关闭了从中央Maven仓库下载snapshot构件的功能。如果你需要使用一个snapshot仓库,你就要在你的pom.xml或者settings.xml中自定义仓库设置。
......

52、mvn site:run

要在浏览器中预览结果,你可以运行mvn site:run,Maven会构建站点并启动一个内嵌的Jetty容器。一旦Jetty启动并开始监听8080端口,你就可以通过在浏览器中输入http://localhost:8080/查看项目站点了。

53、Maven eclipse插件

在pom中制定了enforce插件的时候,可能存在外面默认的插件与公司的插件不一致的情况,出现的错误如下:
  1. [INFO] [enforcer:enforce {execution: enforce-plugin-versions}]
  2. [WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequirePluginVersions failed with message:
  3. Some plugins are missing valid versions:(LATEST RELEASE SNAPSHOT are not allowed )
  4. com.alibaba.org.apache.maven.plugins:maven-eclipse-plugin.  The version currently in use is 2.5.1-alibaba-0 
  5. Build reproducibility : always define plugin versions
  6. [INFO] ------------------------------------------------------------------------
  7. [ERROR] BUILD ERROR
解决方案:
  1. <plugin>
  2. <groupId>com.alibaba.org.apache.maven.plugins</groupId>
  3. <artifactId>maven-eclipse-plugin</artifactId>
  4. <version>2.5.1-alibaba-0</version>
  5. </plugin>

54、编写Hudson插件步骤

步骤1:settings.xml文件中添加
  1. <settings>
  2. ..
  3. <pluginGroups>
  4. <pluginGroup>org.jvnet.hudson.tools</pluginGroup>
  5. </pluginGroups>
  6. ..
  7. </settings>
步骤2:创建插件工程
mvn hpi:create  
步骤3:编译插件工程
mvn clean install
mvn -DdownloadSources=true eclipse:eclipse  

55、使用Maven快速创建Spring Osgi Bundle

http://towerhe.javaeye.com/blog/274722
手工创建Spring Osgi Bundle:http://towerhe.javaeye.com/blog/282836
56、Maven的重定向功能
Maven的jar包中可能依赖的jar包的pom都可能存在变化,比如说artifactId等, 所以在maven服务器端可能需要进行重定向操作。在pom中使用<relocation>标签来解决
57、访问外部的maven仓库
步骤1:在settings.xml中加入外部仓库的profile
  1. <profile>
  2. <id>taobao</id>
  3. <repositories>
  4. <repository>
  5. <id>tbmirror-central</id>
  6. <name>taobao mirror central</name>
  7. <url>http://....../mvn/repository</url> <!--处于保护,去掉了具体的url地址-->
  8. <snapshots>
  9. <enabled>true</enabled>
  10. </snapshots>
  11. <releases>
  12. <enabled>true</enabled>
  13. </releases>
  14. </repository>
  15. </repositories>
  16. </profile>
步骤2:使用-P参数进行访问
mvn clean install -Ptaobao
也可以将taobao修改为默认的profile,则不再需要使用-P参数进行指定
  1. <activeProfiles>
  2. <activeProfile>taobao</activeProfile>
  3. </activeProfiles>
57、《Maven实战》
http://www.javaeye.com/wiki/hzbook/2872-Maven-in-action
58、Maven对Emma支持,对Jar包直接使用mvn emma:emma, 对war实验下来是不行
参考:http://mojo.codehaus.org/emma-maven-plugin/
The Emma Plugin has four goals.
  • emma:emma Instruments, tests, and generates an EMMA report.
  • emma:check Check last intrumentation results.
  • emma:instrument Offline class instrumentor.
  • emma:clean Clean EMMA generated resources.

59、mvn archetpye:generate出错

可能存在的问题:
问题1、引入了snapshot的插件,导致不稳定  
解决方案:在使用命令的时候指定使用插件的版本:mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate,参考http://juvenshun.javaeye.com/blog/485407
问题2、本地仓库或者私服不存在generate的插件,尤其是第一次使用的时候容易出现 
解决方案:关闭公司的settings.xml,再用mvn archetpye:generate, 到maven的中央仓库去下载插件。
问题3:、可以通过指定骨架的版本来解决;默认下载最新,如果下载不到,会报错
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.0
或者
指定代理访问仓库的骨架,代理到maven中央仓库的访问更加的健壮:mvn archetype:generate -P b2b.unmanaged(需要settings.xml配置文件有效,因为使用的是里面定义的”<id>b2b.unmanaged</id>“)

 【注意】
(1)maven中央仓库骨架:网络不通,暂无法指定
公司骨架:http://repo.alibaba-inc.com/mvn/archetype-catalog.xml
(2)指定骨架:mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.0
(3) 骨架的类型包括公司的骨架和maven中央仓库的骨架
60、maven运行jetty时js、css等文件不能修改问题

默认在maven内运行jetty,将会锁定站点的js、css等文件,不便于随时修改,可以手工将c:\Documents and Settings\dvlp\.m2\repository\org\

mortbay\jetty\jetty\6.1.9\jetty.jar内的webdefault.xml内useFileMappedBuffer项改为false即可。

61、安装第三方jar包到本地库

Mvn install:install-file –Dfile=foo.jar –DgroupId=org.foosoft –DartifactId=foo –Dversion=1.2.3 –Dpackaging=jar

62、Maven2中新增Dependency Scope

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

<scope>的使用举例:

<dependency>
<groupId>hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>

63、Maven中央仓库

在maven的安装目录(apache-maven-2.2.1\lib)下面lib包(maven-2.2.1-uber.jar)中,规定了maven的中央仓库的位置和工程的目录结构, maven-2.2.1-uber.jar\org\apache\maven\project \pom-4.0.0.xml.

其中指定了源代码、测试代码等的存放方式,以及常用插件的版本和方法。

64、公司的白名单使用了enforcer插件的配置

.m2\repository\com\alibaba\pampas\3-RC1下面的pampas-3-RC1.pom中规定了黑白名单的限制

  1. <!-- enforcer rules -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-enforcer-plugin</artifactId>
  5. <version>1.0-beta-1</version>
  6. <dependencies>
  7. <dependency>
  8. <groupId>com.alibaba.maven.enforcer</groupId>
  9. <artifactId>pampas.rules.caclist</artifactId>
  10. <version>1.0-SNAPSHOT</version>
  11. </dependency>
  12. </dependencies>
  13. <configuration>
  14. <rules>
  15. <cacEnforcerRule implementation="com.alibaba.maven.enforcer.rule.CacEnforcerRule">
  16. <whiteListUrl>http://repo.alibaba-inc.com/mvn/wl.txt</whiteListUrl>
  17. </cacEnforcerRule>
  18. </rules>
  19. </configuration>
  20. <executions>
  21. <execution>
  22. <id>enforce</id>
  23. <goals>
  24. <goal>enforce</goal>
  25. </goals>
  26. </execution>
  27. </executions>
  28. </plugin>
  29. </plugins>

65、定制化maven的工程

Maven的标准目录结构其实是在Super POM中设置的,由于任何POM都会继承该POM,所以所有的工作都会默认使用标准目录结构。要定制目录,其实就是需要重新设置相关参数的值,即用新值覆盖Super POM中的值。
[1]<finalName>,该元素指定了工程输出的artifact的名称,默认值为${artifactId}-${version},此处修改为app。
[2]<directory>,该元素指定了工程输出的目标目录。默认值为target,此处未修改变。
[3]<sourceDirectory>,该元素指定了Java源文件所在的目录。默认值为src/main/java,此处修改为src/java。
[4]<outputDirectory>,该元素指定了编译后的class文件的放置目录。默认值为target/classes,此处未作改变。
[5]<resources> <resource>,该元素指定了Java源文件使用的资源文件的存放目录。默认值为src/main/resources,此处修改为src/java。由于在编码Java源文件时,Maven会将资源路径中的文件全部拷贝到classes目录。而此时将Java资源文件目录与Java源文件目录,设置为同一目录,所以需要将.java文件排除在资源文件的范畴之外( <exclude>**/*.java</exclude> )。
[6] <testSourceDirectory>,该元素指定了单元测试Java源文件的放置目录。默认值为src/test/java,此处未作修改。
[7] <testOutputDirectory>,该元素指定了单元测试Java源文件编译后的class文件放置目录。默认值为 target/test-classes,此处未作改变。
[8] <testResources> <testResource>,该元素指定了单元测试Java源文件所使用的资源文件的放置目录。默认值为src/test /resources,此处修改为 src/test/java。并且也做了与 设置<resources> <resource>时相同的处理(排除Java源文件)。
    通过上述设置后,就可以拥有一个定制的Maven工程目录结构了。

同时可参考:http://www.duduwolf.com/wiki/2008/771.html

posted on 2012-02-17 07:36 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/02/17/2355196.html

Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客相关推荐

  1. 如何用技术改变生活 哪个瞬间你突然觉得读书真有用?

    作者:南慕伦 链接:https://www.zhihu.com/question/35720340/answer/262160679 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  2. 技术改变生活,激情成就梦想

    技术改变生活,激情成就梦想 不管有没有感受到或者是认识到,技术在改变我们的生活.从我开始接触到技术学习开始, 我就认定了,技术能提高生活水平,技术能让生活更方便,就一直梦想自己能用的自己的技术去 改变 ...

  3. 技术改变生活——用HanLP来协助处理现实中问题

    此例是我之前在学习nlp过程中的一个demo项目,并使用了HanLP官网提供的API接口实现功能,具体需求如下: 1 .项目背景 平时收集了一下客户对于餐馆的评价,这些数据一方面可以让每一位用户清楚地 ...

  4. 知识改变命运 学习成就梦想

    踏着时光车轮,我已走到20岁的年轮边界.驻足观望,电子.网络铺天盖地,知识信息飞速发展,科技浪潮源源不绝,人才竞争日益激烈,形形色色人物竞赴出场,不禁感叹,这世界变化好快. : : : : : 作为一 ...

  5. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引@51cto)

    Sybase数据库技术,数据库恢复 分享Sybase数据库知识 博客文章列表,更新时间:2014-12-14 Sybase数据库技术,数据库恢复 站点地图 最新文章 ASE使用with ignore_ ...

  6. 长期置顶:作为一个技术人,你为什么有时间写博客?准备应对未来的中年危机

    引言 从开始有规律的写博客以来,我为什么有那么多时间写博客:博主,是每天都写博客写到很晚吗:我又是如何做时间管理的?保证输出的频率. 平时多积累 博主工作的公司弹性工作制,平时工作不是太重工作效率高点 ...

  7. 【大学生活】优秀的有趣的博客

    昨晚和几个老同学小聚,聊得很开心.忘了到哪儿聊起一些牛人的博客,走得时候华仔还一直说要我一定记得把博客链接email给他.索性写个资源帖,记录一些我经常浏览的博客,并在此向所有提供,分享优秀资源的博主 ...

  8. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引)

    Sybase数据库技术,数据库恢复 分享Sybase数据库知识 博客文章列表,更新时间:20141218 Sybase数据库技术,数据库恢复 » 站点地图 最新文章 ASE使用with ignore_ ...

  9. 要上进总会有时间的,要放松也总会有理由的——记录2年出版2本书带给我的改变,同时分享写书和写博客的技巧...

    2年前,我其实是很开心的,人在外企,加班不多,晚上下班后就躺在沙发上电视或刷连续剧.周末除了出去讲课挣外快,一般也时玩游戏为主,经常会一个下午加晚上,先玩游戏再下棋再看片再听歌.结果发现我的能力脱节了 ...

最新文章

  1. 【网络安全】Metasploit生成的Shellcode的导入函数解析以及执行流程分析(2)
  2. init(coder:)_2018年《 New Coder》调查:31,000人告诉我们他们如何学习编码并在工作中获得工作…
  3. IDEA+Java:Selenium+Maven+TestNG基本WebUI自动化测试环境搭建
  4. sublime 3 3083验证码
  5. 英语总结系列(二十六):唠唠我的二月英语历程
  6. Criteo公司在上海新开通一个数据中心
  7. hadoop集群配置文件
  8. 2000w mysql_MySQL数据库优化(基于酒店2000w条数据)
  9. 如何修改域名DNS服务器?修改DNS服务器常见问题汇总
  10. libvlc添加视频录制接口
  11. 2010年3月4日:软件工程基本词汇
  12. 南京银行之八,风险提示
  13. 【STM32】 TFT触摸彩屏
  14. Java用Jsoup开发爬虫获取双色球开奖信息
  15. 作为一名非Commiter,如何向开源社区提交自己的代码
  16. C++中的swap函数
  17. 在wordpress中插入b站视频的代码
  18. 求平方根,要求精度到小数点后10位
  19. Apache和php安装
  20. HTML页面使用Google Fonts里的字体(vscode)

热门文章

  1. 【Android】【Java】写一个字符串到Android系统得文件里去存起来,保存字符串到文件
  2. 给初学者推荐的10个Python免费学习网站!赶紧收藏吧!
  3. 2022京东淘宝全自动助手
  4. 【Unity】Unity 基本介绍
  5. Java 后端服务的跨域处理
  6. “过关斩将”的第一台电脑
  7. Thunder v7.9.5.4480 Ayu 优化版
  8. 汉德森基因检测丨认清自己,才能成为更好的自己
  9. Java volatile 关键字的作用
  10. css 中的度量单位