正如标题所提到的,我有以下问题:我用Eclipse
用Maven Nature
,当我更新我的Maven项目,我得到这个错误:
在"正在更新Maven项目"期间发生内部错误.
不支持的IClasspathEntry种类= 4
总是回来的解决方案如下:
mvn eclipse:clean
(项目在eclipse/STS中打开)mvn eclipse:eclipse
下一个)现在,我详尽地尝试了几次所有组合.但我总是得到上述错误.当我不得不进行mvn eclipse:eclipse
项目时,错误开始发生.在使用m2eclipse功能并在eclipse中设置所有内容之前总是运行正常.
我正在Eclipse中开发一个Java项目,它是使用Maven构建的.我正在使用旧项目中的一些回收代码,其中一个类在具有特定名称的JAR的"META-INF/services"文件夹中查找文件,然后解析该文件的文本.在此特定示例中,它查找具有Java接口名称的文件,然后从文件内部获取实现的类名.
所以基本上我要做的是在JAR的"META-INF/services"文件夹中包含一个文件名(X)和一行文本(Y)的文件.我猜这应该是使用Maven完成的,可能是通过在POM文件中指定一个属性,但我的研究没有发现任何东西.我知道你不应该硬编码或手动输入任何META文件,所以我不知道该怎么做.
提前致谢.
如果我要使用不在maven公共存储库中的第三方库,那么将它作为项目的依赖项包含在内的最佳方法是什么,以便当其他人签出我的代码时它仍然可以构建?
即
我的应用程序"A"依赖于公共存储库中不存在的jar"B".但是,我希望添加"B"作为对"A"的依赖,这样当世界另一端的人可以查看代码并仍然能够构建"A"时
我刚开始使用Maven,我读到插件是可以使用的附加组件.
典型的pom.xml
文件结构是
<project>
<groupId>org.koshik.javabrains</groupId>
<artifactId>JarName</artifactId> (A fldernamed JarName was created)
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JarName</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
问题:我应该在哪里插入plugin
标签?如下:
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
在依赖之前还是在dependency
标记之后?有关系吗?
这是我的pom.xml的一个片段.我尝试了以下操作,但配置文件未激活.
mvn clean install -Pdev1
mvn clean install -P dev1
Run Code Online (Sandbox Code Playgroud)
当我尝试mvn help:active-profiles
没有配置文件被列为活动时.如果我设置<activeByDefault>
为dev1
要true
,并运行 mvn help:active-profiles
,它给我展示了配置文件被激活.
<profile>
<id>dev1</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<env>local</env>
<properties.file>src/test/resources/dev1.properties</properties.file>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dev2</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<env>local</env>
<properties.file>src/test/resources/dev2.properties</properties.file>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我的个人资料没有被激活.有没有人遇到类似的问题?
我有一个Gradle项目,我需要将其所有依赖项转移并与另一个Maven项目一起使用.换句话说,我如何从build.gradle生成(或者我可以生成)pom.xml?
例如:
<parent>
<groupId>mycompany.trade.com</groupId>
<artifactId>mycompany.trade.</artifactId>
<version>1.1.1.0-SNAPSHOT</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
这是否意味着Maven会搜索父母pom?如果是的话,在哪里,以何种顺序?可能在文件夹中升级1级?或者在本地存储库或repo中?
谢谢.
运行命令时如
mvn dependency:build-classpath
Run Code Online (Sandbox Code Playgroud)
要么
mvn exec:java
Run Code Online (Sandbox Code Playgroud)
Maven无法解析我的某个模块与另一个模块的依赖关系.
[错误]无法在项目解析器-app上执行目标:无法解析项目project_group的依赖项:A:jar:0.1-SNAPSHOT:找不到工件project_group:B:jar:0.1-SNAPSHOT
项目结构如下:
/pom.xml
/A/pom.xml
/B/pom.xml
Run Code Online (Sandbox Code Playgroud)
父母pom如下:
<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>project_group</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.1-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>A</module>
<module>B</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
第一个子模块(未能解决依赖关系的模块):
<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>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<dependencies>
<dependency>
<groupId>parent_group</groupId>
<artifactId>B</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
第二个子模块(依赖项):
<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>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<name>B</name>
Run Code Online (Sandbox Code Playgroud) 我在Eclipse Indigo下创建了maven-achetype-quickstart的简单项目,然后我去了pom.xml gui编辑器,在依赖项选项卡中log4j
通过搜索在相应的对话框中添加了依赖项.现在我的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 xsd/maven-.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>Test_Maven_03</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Test_Maven_03</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Run Code Online (Sandbox Code Playgroud)
Eclipse说我的POM有许多问题,比如
缺少工件javax.jms:jms:jar:1.1 pom.xml/Test_Maven_03第2行Maven依赖问题
它是什么意思以及如何看到自动jar下载的maven功能.
编辑1
如果我选择log4j 1.2.16而不是1.2.15,我会收到另一个错误:Missing artifact log4j:log4j:bundle:1.2.16
.所以我看不到自动的jar管理.
我正在切换使用Maven作为我的Spring Web应用程序项目,我遇到了一个简单的问题.我不确定将CSS和JS文件放在新项目结构中的位置.
传统的Web App结构
在传统的Java Web应用程序结构中(在Eclipse中,创建为动态Web项目)我将CSS,Javascript和Images文件放在以下结构中
WebContent
|__css/myStyles.css
|__js/myjs.js
|__images/myImage.gif
|__WEB-INF
Run Code Online (Sandbox Code Playgroud)
然后在我的jsp中,如果我想引用一个CSS文件,我做如下:
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/myStyles.css">
Run Code Online (Sandbox Code Playgroud)
这很好用.
Maven Web App结构
在Maven项目中,我将css文件放在以下位置:
在与WEB-INF相同级别的webapp文件夹下,就像在传统的动态Web项目中一样.但是当我做以下事情时
mvn clean tomcat:run
Run Code Online (Sandbox Code Playgroud)
我从Spring Framework中收到以下错误:
org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/appname/css/myStyles.css] in DispatcherServlet
Run Code Online (Sandbox Code Playgroud)
将我的css文件夹放在src/main/resources下但是当我执行以下操作时:
mvn clean tomcat:run
Run Code Online (Sandbox Code Playgroud)
我从Spring Framework中收到以下错误:
org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/appname/css/myStyles.css] in DispatcherServlet
Run Code Online (Sandbox Code Playgroud)
放置我的css文件夹src/main/resources
结果:与上述相同
我确信它很简单,但我被卡住了,也许我忽略了一些东西.提前致谢
更新:添加pom.xml以查看它是否可以帮助解决问题:
<?xml version="1.0" encoding="UTF-8"?>
<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> …
Run Code Online (Sandbox Code Playgroud)