maven2 之 pom.xml文件

http://www.24xuexi.com/w/2011-05-04/89264.html

如果网络使用的代理,需要对用户的settings.xml作如下配置(默认位于~/.m2目录下):
<settings>
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>proxy.mycompany.com</host>
<port>8080</port>
<username>your-username</username>
<password>your-password</password>
</proxy>
</proxies>
</settings>
Maven的编译插件默认是JDK 1.4的编译级别,为了让Maven的编译插件使用JDK5.0的编译级别,需要对编译插件作如下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
一些IDE没有提供直接创建Maven项目的能力,我们通常的做法是,在命令行创建Maven项目,然后生成特定于IDE的工程定义文件,然后在IDE中打开工程。两个常用的是创建IDE功臣定义文件的命令如下:
mvn idea:idea——用于生成IDEA项目定义文件。
mvn eclipse:eclipse——用于生成Eclipse项目定义文件。
在Maven项目的目录结构中,在src/main/目录下新建一个resources目录,所有放在该目录中的非代码资源会按照原始结构在打包的时候放到JAR(或者WAR等)文件的顶层目录中。在使用mvnpackage命令生成的JAR(或者WAR等)文件中,存在META-INF/MANIFEST.MF文件。我们也可以在resources目录下存放一个META-INF/MANIFEST.MF,并对打包插件进行如下配置,那么Maven在打包的时候就不会自动生成。而是使用用户提供的文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
另外,在生成的JAR(或者WAR等)文件中的META-INF目录下由一个maven子目录,其中包含了一个pom.xml和pom.properties,这样,这个打包文件就是一个自描述的归档文件。包括groupId、version等信息。
在某些情况下,资源文件中的某些值可能在构建的时候才能确定,比如工程名字、版本信息等等。在这种情况下,可以在资源文件中以${…}的形式定义占位符,在构建的process-resources阶段,Maven会用实际的值去取代占位符。提供占位符确切值的地方可以是:pom.xml中、settings.xml中、外部属性文件中以及系统属性中(经过测试,MANIFEST.MF文件似乎不能进行过滤)。
在Maven构建过程中的process-resources阶段,如果需要执行对占位符的替换操作,需要在pom.xml文件中启用资源的过滤操作:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
有了如上配置我们在资源文件就可以使用pom已有配置信息
eg:我们在src/main/resources下面建立application.properties文件
# application.properties
application.name=${pom.name}
application.version=${pom.version}
运行:mvn process-resources在target/classes下面的application.properties结果为:
# application.properties
application.name=Maven Quick Start Archetype
application.version=1.0-SNAPSHOT
当然filter还可以用其他的外部文件,不一定来自pom.xml[${pom.name} ]以及setting.xml[${settings.localRepository }]
e.g src/main/filters/filter.properties:
# filter.properties
my.filter.value=hello!
pom.xml:
< build >
< filters >
< filter > src/main/filters/filter.properties </ filter >
</ filters >
< resources >
< resource >
< directory > src/main/resources </ directory >
< filtering > true </ filtering >
</ resource >
</ resources >
</ build >
# application.properties
application.name=${pom.name}
application.version=${pom.version}
message=${my.filter.value}
同样可以在pom文件中直接定义my.filter.value常量< build>
<resources>
<resource>
<directory> src/main/resources </directory>
<filtering> true </filtering>
</resource>
</resources>
</build>
<properties>
<my .filter.value> hello </my.filter.value>
</properties>
效果同样,这样就不需要外部文件了。另外filter还可以来自系统设置以及可以自定义:


# application.properties
java.version=${java.version}
command.line.prop=${command.line.prop}
Maven2中,在pom.xml中插件和依赖的定义非常相像,但是在插件定义(或者配置)中,<groupId>和<version>标签在大多数情况下可以省略。如果你没有指定<groupId>,Maven将默认通过org.apache.maven.plugins或者org.codehaus.mojo的<groupId>标签查找插件。你可以在POM文件中指定一个查找的<groupId>也可以在settings.xml等地方指定;如果你没有指定<version>,Maven将尝试使用插件的最新发布版本。
如果希望查看某个Maven插件的可配置选项有哪些,可以使用mvnhelp:describe命令。示例如下:
mvn help:describe-DgroupId=org.apache.maven.plugins-DartifactId=maven-compiler-plugin -Dfull=true
或者,你也可以在http://maven.apache.org/plugins/查找详细的插件信息。
默认情况下,项目的非代码资源文件放在src/main/resource目录下,测试所需的非代码资源放在src/test/resource目录下。这是定义在SuperPOM文件中的。我们可以改变这个设置,但是不应该这么做。
执行native2ascii命令转换国际化i18n资源文件,添加如下插件配置(使用默认路径需要在src/main下添加native2ascii路径,就不需要配置resource那么复杂了)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native2ascii-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>native2ascii</goal>
</goals>
<!-- specific configurations-->
<configuration>
<dest>target/classes</dest>
<encoding>UTF8</encoding>
<includes>
*.properties
</includes>
</configuration>
</execution>
</executions>
</plugin>
执行copy资源文件构建生产环境配置文件 hibernate项
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>prepare-dependencies-repackage-copy</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy todir="target/classes/com/cmcc/hibernate"overwrite="true">
<filesetdir="src/main/java/com/cmcc/hibernate">
<include name="**/*.hbm.xml"/>
</fileset>
</copy>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
最后是项目引用,jar包依赖关系的配置
我们在mvn install后在local repo中生成的jar包也可以被其他项目所引用
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
注意scope,这里是compile,如果使用junit,scope是test。
举例说明:如果我们的project需要用到log4j包,那么我们可以先google--"site:www.ibiblio.org maven2 log4j"。Indexof /maven2/log4j/log4j 下面有maven-metadata.xml描述了groupId,artifactId,version等等。获取了这些信息之后,你 就可以在pom.xml中添加依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
<scope>compile</scope>
</dependency>
如何发布我的jar包到我的remote repository
你需要在setting.xml中间设置server:
<servers>
<server>
<id>mycompany-repository</id>
<username>jvanzyl</username>
<!--Default value is ~/.ssh/id_dsa-->
<privateKey>/path/to/identity</privateKey>
<passphrase>my_key_passphrase</passphrase>
</server>
</servers>
然后在pom.xml中设置远程url:
<distributionManagement>
<repository>
<id>mycompany-repository</id>
<name>MyCompanyRepository</name>
<url>scp://repository.mycompany.com/repository/maven2</url>
</repository>
</distributionManagement>
Maven 项目中,`pom.xml` 是项目的核心配置文件,它定义了项目的依赖关系、构建配置、开发者信息等关键内容。如果项目中缺少 `pom.xml` 文件Maven 将无法识别该项目为标准的 Maven 项目,从而导致构建失败或依赖管理失效。 ### 检查项目结构 Maven 项目通常遵循标准的目录结构,其中 `pom.xml` 文件应位于项目的根目录下。如果文件不存在,可能是项目未正确创建,或者文件被误删。可以通过以下方式确认: - 在文件系统中查找 `pom.xml` 文件。 - 使用 IDE(如 IntelliJ IDEA 或 Eclipse)查看项目结构是否包含 `pom.xml`。 ### 手动创建 `pom.xml` 文件 如果确认项目缺少 `pom.xml`,可以手动创建一个基本的 `pom.xml` 文件。以下是 `pom.xml` 的一个简单模板: ```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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-project</artifactId> <version>1.0-SNAPSHOT</version> <name>My Project</name> <url>http://maven.apache.org</url> <dependencies> <!-- 可在此处添加依赖项 --> </dependencies> </project> ``` 将上述内容保存为 `pom.xml` 并放置在项目的根目录中。 ### 使用 Maven Archetype 创建新项目 如果项目结构混乱或无法恢复 `pom.xml`,可以考虑使用 Maven Archetype 创建一个全新的 Maven 项目。执行以下命令: ```bash mvn archetype:generate -DgroupId=com.example -DartifactId=my-new-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 该命令会生成一个包含完整 `pom.xml` 的标准 Maven 项目结构。 ### 配置 IntelliJ IDEA 的 Maven 设置 如果使用 IntelliJ IDEA 开发,确保 IDE 的 Maven 插件已启用,并且正确指向本地的 Maven 安装目录。可以在 **Settings > Build, Execution, Deployment > Build Tools > Maven** 中检查相关配置。 ### 使用 Maven 命令行工具 Maven 提供了命令行工具来修复项目结构。例如,可以使用以下命令生成项目骨架: ```bash mvn archetype:generate ``` 系统会提示选择项目模板,并自动创建 `pom.xml` 文件。 ### 总结 Maven 项目缺少 `pom.xml` 文件时,最直接的解决方法是手动创建该文件,或者使用 Maven 工具重新生成项目结构。确保项目结构符合 Maven 的标准格式,并在 IDE 中正确配置 Maven 插件,有助于避免此类问题的发生。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值