Maven学习--------基础2

继续学习Maven。

4.2 变量

1) 问:如何使用变量替换?项目中的某个配置文件比如jdbc.properties使用了一些pom中的变量,如何在发布中使用包含真实内容的最终结果文件?

答:使用资源过滤功能,比如:

<project>

...

<properties>

<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>

<jdbc.url>jdbc:mysql://localhost:3306/development_db</jdbc.url>

<jdbc.username>dev_user</jdbc.username>

<jdbc.password>s3cr3tw0rd</jdbc.password>

</properties>

...

<build>

<resources>

<resource>

<directory>src/main/resources</directory>

<filtering>true</filtering>

</resource>

</resources>

</build>

...

<profiles>

<profile>

<id>production</id>

<properties>

<jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>

<jdbc.url>jdbc:oracle:thin:@proddb01:1521:PROD</jdbc.url>

<jdbc.username>prod_user</jdbc.username>

<jdbc.password>s00p3rs3cr3t</jdbc.password>

</properties>

</profile>

</profiles>

</project>

2) 问: maven-svn-revision-number-plugin 插件说明

答: maven-svn-revision-number-plugin 可以从 SVN 中获取版本号,并将其变成环境变量,交由其他插件或者profile使用,详细帮助在这里 。一般和resource的filter机制同时使用

<plugins>

<plugin>

<groupId>com.google.code.maven-svn-revision-number-plugin</groupId>

<artifactId>maven-svn-revision-number-plugin</artifactId>

<version>1.3</version>

<executions>

<execution>

<goals>

<goal>revision</goal>

</goals>

</execution>

</executions>

<configuration>

<entries>

<entry>

<prefix>prefix</prefix>

</entry>

</entries>

</configuration>

</plugin>

</plugins>

这段代码负责把resource文件中的内容替换成适当内容

repository = ${prefix.repository}

path = ${prefix.path}

revision = ${prefix.revision}

mixedRevisions = ${prefix.mixedRevisions}

committedRevision = ${prefix.committedRevision}

status = ${prefix.status}

specialStatus = ${prefix.specialStatus}

3)我的程序有些单元测试有错误,如何忽略测试步骤?

有好几种方法都可以实现跳过单元测试步骤,一种是给mvn增加命令行参数 -Dmaven.test.skip=true 或者 -DskipTests=true ;另外一种是给surefire插件增加参数,如下:

<span class="kwrd"><</span><span class="html">project</span><span class="kwrd">></span>
  [...]
  <span class="kwrd"><</span><span class="html">build</span><span class="kwrd">></span>
    <span class="kwrd"><</span><span class="html">plugins</span><span class="kwrd">></span>
      <span class="kwrd"><</span><span class="html">plugin</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">groupId</span><span class="kwrd">></span>org.apache.maven.plugins<span class="kwrd"></</span><span class="html">groupId</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">artifactId</span><span class="kwrd">></span>maven-surefire-plugin<span class="kwrd"></</span><span class="html">artifactId</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">version</span><span class="kwrd">></span>2.8<span class="kwrd"></</span><span class="html">version</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">configuration</span><span class="kwrd">></span>
          <span class="kwrd"><</span><span class="html">skipTests</span><span class="kwrd">></span>true<span class="kwrd"></</span><span class="html">skipTests</span><span class="kwrd">></span>
        <span class="kwrd"></</span><span class="html">configuration</span><span class="kwrd">></span>
      <span class="kwrd"></</span><span class="html">plugin</span><span class="kwrd">></span>
    <span class="kwrd"></</span><span class="html">plugins</span><span class="kwrd">></span>
  <span class="kwrd"></</span><span class="html">build</span><span class="kwrd">></span>
  [...]
<span class="kwrd"></</span><span class="html">project</span><span class="kwrd">></span>
4) 如果只想运行单个测试用例,能否实现?

可以,运行时候增加命令行参数 -Dtest=MyTest 即可,其中MyTest是所需要运行的单元测试用例名称,但是不需要包含package部分。

4.3 编译

1) 问:如何给插件指派参数?比如我要设置一些编译参数

答:以下内容设定编译器编译java1.5的代码

<project>

...

<build>

...

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

</plugins>

...

</build>

...

</project>

要设置其他插件的参数也可以,请参考对应插件的帮助信息

2) 问:我的目录是非标准的目录结构,如何设置让maven支持?

答:指定source目录和test-source目录即可。

<build>

<directory>target</directory>

<sourceDirectory>src</sourceDirectory>

<scriptSourceDirectory>js/scripts</scriptSourceDirectory>

<testSourceDirectory>test</testSourceDirectory>

<outputDirectory>bin</outputDirectory>

<testOutputDirectory>bin</testOutputDirectory>

</build>

这个例子把源代码设置成了src目录,测试代码在test目录,所以输出到bin目录。这里要注意,directory如果也设置成bin目录的话,maven打包的时候会引起死循环,因为directory是所有工作存放的地方,默认包含outputDirectory定义的目录在内。

3) 我源代码是UTF8格式的,我如何在maven中指定?

设置一个变量即可

<project>

...

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

...

</project>

{color:blue}以上是官方给出的解决方案,但是经过尝试这样只能影响到resource处理时候的编码{color},真正有用的是如下配置:

{code:xml}
<build>
  ...
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
  ...
</build>
{code}
. 问:我的项目除了main/java目录之外,还加了其他的c++目录,想要一并编译,如何做?

答:使用native插件,具体配置方法参考[http://mojo.codehaus.org/maven-native/native-maven-plugin/]

{code:xml}
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>native-maven-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
</plugin>
{code}
. 问:我想要把工程的所有依赖的jar都一起打包,怎么办?

答:首先修改maven的配置文件,给maven-assembly-plugin增加一个jar-with-dependencies的描述。

{code:xml}
<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
{code}

然后使用命令打包即可:

mvn assembly:assembly
. 问:我想把main/scripts中的内容一起打包发布,如何做?

答:在pom中配置额外的资源目录。如果需要的话,还可以指定资源目录的输出位置

{code:xml}
<build>
  ...
  <resources>
    <resource>
      <filtering>true</filtering>
      <directory>src/main/command</directory>
      <includes>
        <include>run.bat</include>
        <include>run.sh</include>
      </includes>
      <targetPath>/abc</targetPath>
    </resource>
    <resource>
      <directory>src/main/scripts</directory>
    </resource>
  </resources>
  ...
</build>
{code}
. 问:我有多个源代码目录,但是maven只支持一个main src和一个test src,怎么办?

答:使用另外一个插件,并仿照如下配置pom

{code:xml}
<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/config/java</source>
                <source>src/main/java</source>
                <source>src/member/java</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
{code}
. 问:我的源代码目录中有一部分文件我不想让maven编译,怎么做?

答:使用一个maven插件,然后使用includes和excludes。同理,也可以处理资源的过滤。

{code:xml}
<build>
  <sourceDirectory>http://www.cnblogs.com/src/java</sourceDirectory>
  <plugins>
    <plugin>
      <groupId>com.sun.enterprise</groupId>
      <artifactId>hk2-maven-plugin</artifactId>
      <configuration>
        <includes>
          <include>com/sun/logging/LogDomains.*</include>
          <include>com/sun/enterprise/util/OS.java</include>
          <include>com/sun/enterprise/util/io/FileUtils.java</include>
          <include>com/sun/enterprise/util/zip/**</include>
          <include>com/sun/enterprise/util/i18n/**</include>
          <include>com/sun/enterprise/deployment/backend/IASDeploymentException.java</include>
        </includes>
        <excludes>
          <exclude>com/sun/enterprise/config/ConfigBeansFactory.java</exclude>
          <exclude>com/sun/enterprise/config/clientbeans/**</exclude>
        </excludes>
      </configuration>
    </plugin>
  </plugins>
  <resources>
    <resource>
      <directory>http://www.cnblogs.com/src/java</directory>
      <includes>
        <include>**/*.properties</include>
      </includes>
    </resource>
  </resources>
</build>
{code}
. 问:我的项目是一个纯的html组成的项目,没有任何的java代码,怎么跳过编译过程?

答:配置如下

{code:xml}
<build>
  <sourceDirectory>src/java</sourceDirectory>
  <plugins>
    <plugin>
    <groupId>com.sun.enterprise</groupId>
    <artifactId>hk2-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>
{code}
. 问:我的工程里用hibernate,想在编译时候自动生成ddl,如何做?

答:添加插件

hibernate3-maven-plugin

,按照如下配置:

{code:xml}
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>hibernate3-maven-plugin</artifactId>
          <version>2.1</version>
          <configuration>
            <components>
              <component>
                <name>hbm2ddl</name>
                <implementation>annotationconfiguration</implementation>
              </component>
            </components>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>hsqldb</groupId>
              <artifactId>hsqldb</artifactId>
              <version>${hsqldb.version}</version>
            </dependency>
          </dependencies>
        </plugin>
{code}
. 问:我能用maven支持eclipse RCP项目吗?

答:当然可以,你可以使用插件 Tycho,详细内容可以参考这里[http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi-bundles/].

 <plugin>
  <groupid>org.sonatype.tycho</groupid>
  <artifactid>target-platform-configuration</artifactid>
  <version>0.7.0</version>
  <configuration>
    <resolver>p2</resolver>
  </configuration>
</plugin>
另外,老牌的pde-maven-plugin就不要用了,已经好几年没见更新了。

4.4 ant互动

1) 如何在maven编译时候运行ant脚本?

使用专门的antrun插件,并且在target标签内部加入ant的代码

      <span class="kwrd"><</span><span class="html">plugin</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">artifactId</span><span class="kwrd">></span>maven-antrun-plugin<span class="kwrd"></</span><span class="html">artifactId</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">version</span><span class="kwrd">></span>1.6<span class="kwrd"></</span><span class="html">version</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">executions</span><span class="kwrd">></span>
          <span class="kwrd"><</span><span class="html">execution</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">phase</span><span class="kwrd">></span> <span class="rem"><!-- 生命周期阶段 --></span> <span class="kwrd"></</span><span class="html">phase</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">configuration</span><span class="kwrd">></span>
              <span class="kwrd"><</span><span class="html">target</span><span class="kwrd">></span>
                <span class="rem"><!-- 加入target内部的代码 --></span>
              <span class="kwrd"></</span><span class="html">target</span><span class="kwrd">></span>
            <span class="kwrd"></</span><span class="html">configuration</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">goals</span><span class="kwrd">></span>
              <span class="kwrd"><</span><span class="html">goal</span><span class="kwrd">></span>run<span class="kwrd"></</span><span class="html">goal</span><span class="kwrd">></span>
            <span class="kwrd"></</span><span class="html">goals</span><span class="kwrd">></span>
          <span class="kwrd"></</span><span class="html">execution</span><span class="kwrd">></span>
        <span class="kwrd"></</span><span class="html">executions</span><span class="kwrd">></span>
      <span class="kwrd"></</span><span class="html">plugin</span><span class="kwrd">></span>

2)如何在ant脚本中引用maven的classpath?

maven给每一个依赖都生成了一个属性,格式为"groupId:artifactId[:classifier]:type",比如,如果一下例子就显示依赖的org.apache.common-util的jar文件路径

<span class="kwrd"><</span><span class="html">echo</span> <span class="attr">message</span><span class="kwrd">="Dependency JAR Path: ${org.apache:common-util:jar}"</span><span class="kwrd">/></span> 

另外,maven还预定义了四个classpath的引用,他们是

  • maven.compile.classpath
  • maven.runtime.classpath
  • maven.test.classpath
  • maven.plugin.classpath

3)如何使用antrun插件运行外部的build文件?

很简单,直接在antrun里边使用ant指令即可,如下:

<span class="kwrd"><</span><span class="html">plugin</span><span class="kwrd">></span>
    <span class="kwrd"><</span><span class="html">groupId</span><span class="kwrd">></span>org.apache.maven.plugins<span class="kwrd"></</span><span class="html">groupId</span><span class="kwrd">></span>
    <span class="kwrd"><</span><span class="html">artifactId</span><span class="kwrd">></span>maven-antrun-plugin<span class="kwrd"></</span><span class="html">artifactId</span><span class="kwrd">></span>
    <span class="kwrd"><</span><span class="html">version</span><span class="kwrd">></span>1.6<span class="kwrd"></</span><span class="html">version</span><span class="kwrd">></span>
    <span class="kwrd"><</span><span class="html">executions</span><span class="kwrd">></span>
        <span class="kwrd"><</span><span class="html">execution</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">id</span><span class="kwrd">></span>compile<span class="kwrd"></</span><span class="html">id</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">phase</span><span class="kwrd">></span>compile<span class="kwrd"></</span><span class="html">phase</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">configuration</span><span class="kwrd">></span>
                <span class="kwrd"><</span><span class="html">target</span><span class="kwrd">></span>
                    <span class="rem"><!-- 同时传递内置的classpath给外部ant文件 --></span>
                    <span class="kwrd"><</span><span class="html">property</span> <span class="attr">name</span><span class="kwrd">="compile_classpath"</span> <span class="attr">refid</span><span class="kwrd">="maven.compile.classpath"</span><span class="kwrd">/></span>
                    <span class="kwrd"><</span><span class="html">property</span> <span class="attr">name</span><span class="kwrd">="runtime_classpath"</span> <span class="attr">refid</span><span class="kwrd">="maven.runtime.classpath"</span><span class="kwrd">/></span>
                    <span class="kwrd"><</span><span class="html">property</span> <span class="attr">name</span><span class="kwrd">="test_classpath"</span> <span class="attr">refid</span><span class="kwrd">="maven.test.classpath"</span><span class="kwrd">/></span>
                    <span class="kwrd"><</span><span class="html">property</span> <span class="attr">name</span><span class="kwrd">="plugin_classpath"</span> <span class="attr">refid</span><span class="kwrd">="maven.plugin.classpath"</span><span class="kwrd">/></span>

                    <span class="kwrd"><</span><span class="html">ant</span> <span class="attr">antfile</span><span class="kwrd">="${basedir}/build.xml"</span><span class="kwrd">></span>
                        <span class="kwrd"><</span><span class="html">target</span> <span class="attr">name</span><span class="kwrd">="test"</span><span class="kwrd">/></span>
                    <span class="kwrd"></</span><span class="html">ant</span><span class="kwrd">></span>
                <span class="kwrd"></</span><span class="html">target</span><span class="kwrd">></span>
            <span class="kwrd"></</span><span class="html">configuration</span><span class="kwrd">></span>
            <span class="kwrd"><</span><span class="html">goals</span><span class="kwrd">></span>
                <span class="kwrd"><</span><span class="html">goal</span><span class="kwrd">></span>run<span class="kwrd"></</span><span class="html">goal</span><span class="kwrd">></span>
            <span class="kwrd"></</span><span class="html">goals</span><span class="kwrd">></span>
        <span class="kwrd"></</span><span class="html">execution</span><span class="kwrd">></span>
    <span class="kwrd"></</span><span class="html">executions</span><span class="kwrd">></span>
<span class="kwrd"></</span><span class="html">plugin</span><span class="kwrd">></span>
. 问:如何在ant中使用maven的功能?

答:使用ant的[maven task|http://maven.apache.org/ant-tasks/index.html],不过只有ant 1.6以上和jdk 1.5环境才支持。

h4. 测试相关

. 问:如何忽略某个阶段的结果?比如单元测试不一定要全正确

答:给插件增加testFailureIgnore参数,并设置为false。如果要屏蔽该阶段,则用

<skip>true</skip>
{code:xml}
<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
{code}
. 问:我如何在maven中加入PMD,CheckStyle,JDepend等检查功能?

答:加入PMD检查,以下代码如果在

reporting

节点中加入则在

mvn site

中执行,如果在

build

节点中加入,则在build的时候自动运行检查。详细配置参考[pmd插件使用说明|http://maven.apache.org/plugins/maven-pmd-plugin/]

{code:xml}
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.5</version>
      </plugin>
    </plugins>
{code}

加入 checkstyle 检查,详细配置参考[checkstyle插件使用说明|http://maven.apache.org/plugins/maven-checkstyle-plugin/],同样注意放置在reporting和build节点中的区别(所有报表类插件都要同样注意):

{code:xml}
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.5</version>
      </plugin>
{code}

加入 simian 的支持,simian是一个支持代码相似度检查的工具,目前有maven插件,也有checkstyle的插件。它不仅可以检查java,甚至可以支持文本文件的检查。详细帮助信息参考[这里|http://www.redhillconsulting.com.au/products/simian/]。simian 的 maven插件在[这里|http://mojo.codehaus.org/simian-report-maven-plugin/introduction.html]

{code:xml}
      <build>
         <plugins>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>simian-maven-plugin</artifactId>
               <version>1.6.1</version>
            </plugin>
         </plugins>
         ...
      </build>
{code}

加入 jdepend 检查,详细配置参考[jdepend使用说明|http://mojo.codehaus.org/jdepend-maven-plugin/],

{code:xml}
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.0-beta-2</version>
      </plugin>
{code}

加入 findbugz 检查,详细配置参考[findbugz使用说明|http://mojo.codehaus.org/findbugs-maven-plugin/usage.html],

{code:xml}
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.0.1</version>
      </plugin>
{code}

加入javadoc生成,详细配置参考[javadoc usage|http://maven.apache.org/plugins/maven-javadoc-plugin/usage.html]

{code:xml}
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          ...
        </configuration>
      </plugin>
{code}

加入 jxr 支持,JXR是一个生成java代码交叉引用和源代码的html格式的工具,详细配置信息参考[jxr usage|http://maven.apache.org/plugins/maven-jxr-plugin/]。注意,jxr没有必要在build阶段运行。

{code:xml}
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </reporting>
{code}

加入 Cobertura 支持,它是一个代码覆盖率工具,可以用来评估具有相应测试的源代码的比率。详细帮助在[这里|http://mojo.codehaus.org/cobertura-maven-plugin/index.html]。另外一个功能相似的软件是[EMMA|http://emma.sourceforge.net/samples.html],详细的帮助在[这里|http://mojo.codehaus.org/emma-maven-plugin/usage.html]。两个产品的比较文章在[这里|http://www.topcoder.com/tc?module=Static&d1=features&d2=030107],个人倾向于都要用,因为给出的指标不一样,都有参考作用。

{code:xml|title=Cobertura }
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <check>
            <branchRate>85</branchRate>
            <lineRate>85</lineRate>
            <haltOnFailure>true</haltOnFailure>
            <totalBranchRate>85</totalBranchRate>
            <totalLineRate>85</totalLineRate>
            <packageLineRate>85</packageLineRate>
            <packageBranchRate>85</packageBranchRate>
            <regexes>
              <regex>
                <pattern>com.example.reallyimportant.*</pattern>
                <branchRate>90</branchRate>
                <lineRate>80</lineRate>
              </regex>
              <regex>
                <pattern>com.example.boringcode.*</pattern>
                <branchRate>40</branchRate>
                <lineRate>30</lineRate>
              </regex>
            </regexes>
          </check>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>clean</goal>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
{code}
{code:xml|title=EMMA}
  <reporting>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>emma-maven-plugin</artifactId>
        <version>1.0-alpha-3-SNAPSHOT</version>
      </plugin>
      ...
    </plugins>
    ...
  </reporting>
{code}

添加 javaNCSS 插件,它是一个java代码的度量工具,详细参考在[这里|http://mojo.codehaus.org/javancss-maven-plugin/]。

{code:xml}
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javancss-maven-plugin</artifactId>
        <version>2.0-beta-2</version>
      </plugin>
    </plugins>
  </reporting>
{code}

h4. profile相关

. 问:profile能够设置为某个变量不存在的条件下激活?

答:使用!前缀,请看示例:

{code:xml}
<activation>
        <property>
          <name>!environment.type</name>
        </property>
      </activation>
{code}

h4. 部署相关

. 问:其他部署到服务器的方式和配置怎么配?

答:本文摘自 [http://blog.csdn.net/zyxnetxz/archive/2009/05/18/4199348.aspx]{panel} *Distribution Management* 用于配置分发管理,配置相应的产品发布信息,主要用于发布,在执行mvn deploy后表示要发布的位置 *# 配置到文件系统

{code:xml}
<distributionManagement>
  <repository>
    <id>proficio-repository<id>
    <name>Proficio Repository<name>
    <url>file://${basedir}/target/deploy<url>
  <repository>
<distributionManagement>
{code}

*# 使用ssh2配置

{code:xml}
<distributionManagement>
  <repository>
    <id>proficio-repository<id>
    <name>Proficio Repository<name>
    <url>scp://sshserver.yourcompany.com/deploy<url>
  <repository>
<distributionManagement>
{code}

*# 使用sftp配置

{code:xml}
<distributionManagement>
  <repository>
    <id>proficio-repositoryi<d>
    <name>Proficio Repository<name>
    <url>sftp://ftpserver.yourcompany.com/deploy<url>
  <repository>
<distributionManagement>
{code}

*# 使用外在的ssh配置编译扩展用于指定使用wagon外在ssh提供,用于提供你的文件到相应的远程服务器。

{code:xml}
<distributionManagement>
  <repository>
    <id>proficio-repository<id>
    <name>Proficio Repository<name>
    <url>scpexe://sshserver.yourcompany.com/deploy<url>
  <repository>
<distributionManagement>
<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon<groupId>
      <artifactId>wagon-ssh-external<artifactId>
      <version>1.0-alpha-6<version>
    <extension>
  <extensions>
<build>
{code}

*# 使用ftp配置

{code:xml}
<distributionManagement>
  <repository>
    <id>proficio-repository<id>
    <name>Proficio Repository<name>
    <url>ftp://ftpserver.yourcompany.com/deploy<url>
  <repository>
<distributionManagement>
<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagongroupId>
      <artifactId>wagon-ftpartifactId>
      <version>1.0-alpha-6version>
    <extension>
  <extensions>
<build>
{code}

{panel} h4. 插件配置

. 问:我用maven输出site,如何设置输出为utf8编码?

答: 配置site插件的编码设置

{code:xml}
...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>2.0-beta-6</version>
    <configuration>
      <outputEncoding>UTF-8</outputEncoding>
    </configuration>
  </plugin>
  ...
{code}



本文借鉴与http://aiape.iteye.com/blog/1455420

版权声明:欢迎转载,希望在你转载的同时,添加原文地址,谢谢配合

时间: 2024-11-06 03:34:13

Maven学习--------基础2的相关文章

Maven学习笔记(三)——Maven仓库(Repositories)、基础命令(二)&amp;自动构建项目

前言 上篇blog介绍了maven最基础的一些核心概念,包括maven项目约定的目录结构.maven核心配置文件--pom.xml文件的解析以及3个基本的maven命令(compile.test.package),本篇blog将继续介绍剩余的maven命令,还会涉及到maven最重要的概念之一--Maven仓库,最后会学习如何通过maven自动构建java项目/javaweb项目以及自动构建可供选择的项目骨架. Maven仓库(Repositories) 本来打算继续学习剩余的maven命令,但

Maven学习笔记之——坐标和依赖(下)

Maven学习笔记之--坐标和依赖(下) 1.    最佳实践 归纳Maven依赖使用的常用技巧.方便用来避免和处理很多常见问题. 1.1.     排除依赖 传递性依赖会给项目隐式地引入很多依赖,这极大地简化了项目依赖的管理.但是有些时候这种特性也会带来问题.例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另外一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目.这时候需要排除掉该SNAPSH

IDEA + maven 零基础构建 java agent 项目

200316-IDEA + maven 零基础构建 java agent 项目 Java Agent(java 探针)虽说在 jdk1.5 之后就有了,但是对于绝大多数的业务开发 javaer 来说,这个东西还是比较神奇和陌生的:虽说在实际的业务开发中,很少会涉及到 agent 开发,但是每个 java 开发都用过,比如使用 idea 写了个 HelloWorld.java,并运行一下, 仔细看控制台输出 本篇将作为 Java Agent 的入门篇,手把手教你开发一个统计方法耗时的 Java A

Maven学习笔记之——仓库(中)

Maven学习笔记之--仓库(中) 1.    远程仓库的配置 当出现默认的中央仓库无法满足我们的需求或者连接不上的时候.我们可以通过POM文件来指定远程仓库. <repositories> <repository> <id>jboss-maven2-release-repository</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/

Maven学习总结

转载至:http://www.cnblogs.com/xdp-gacl/p/3498271.html 一 入门 一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1.1.项目构建 项目构建过程包括[清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目]这几个步骤,这六个步骤就是一个项目的完整构建过程. 理想的项目构建是高度自动化,跨平台

Maven学习笔记

Maven学习笔记 Maven是项目管理工具 1. 安装Maven 在apache官网(http://maven.apache.org/download.cgi) 下载apache-maven-3.3.3-bin.zip和apache-maven-3.3.3-src.zip:解压,把bin的位置设在环境变量里, 新建环境变量名:MAVEN_HOME 值:C:\Users\pengtao.yue\apache-maven-3.3.3\bin 在path中加入:%MAVEN_HOME% 在DOS中输

php学习基础-文件系统(一) 文件处理,文件权限

一.PHP系统文件处理 /* PHP文件系统处理 * 所有文件处理都是使用系统函数完成的. * 是基于Linux/Unix系统为模型 * * 文件系统处理的作用: * 1. 所有的项目离不开文件处理 * 2. 可以用文件长时间保存数据 * 3. 建立缓存, 服务器中文件操作 * * 文件处理 * 1. 文件类型 * 以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型 * 在Linux/Unix下, block, char, dir, fifo, file,

Maven学习-目录结构

Maven学习-入门 1. 什么是Maven 2. 如何用Maven来构建项目 3. Maven项目的目录结构 Maven约定了一套规则来创建和构建项目.得益于Maven的一些约定,我们只要学习相对很少的命令就可以创建和管理我们的项目.在项目的目录结构上,Maven有一套约定的通用的目录结构. 使用一套通用的目录结构的好处是,可以减少开发人员熟悉不同Maven项目时的认知负担.在使用相同的目录结构的情况下,开发人员可以很快的熟悉一个项目. 1.Maven通用的目录结构介绍 通用目录结构 Mave

Maven学习笔记之——仓库(上)

Maven学习笔记之--仓库(上) 1.    何为maven仓库 Maven可以在某一指定位置统一存放所有maven项目共享的构件.此指定位置就是maven仓库.实际的项目将不再自己存放其所依赖的构件.他们只需要声明这些依赖的坐标.在需要的时候就会自动根据坐标找到仓库中的构件.并使用他们. 仓库的意义:减少磁盘占用空间.去除大量重复的构件.尤其是项目越来越多.越来越大的时候.更便于统一管理所有控件. 2.    仓库的布局 任何一个构件都有其唯一的坐标.根据这个坐标可以定义其在仓库中的唯一存储