Maven-Projekt erstellt Geldstrafe in IntelliJ, aber nicht mit maven command line
Wenn ich laufen:
mvn
Bekomme ich folgenden Fehler:
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 171, column 21
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 179, column 21
Und in der build-Fehler block sehe ich:
No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
Dies ist eine spring-mvc-Webanwendung, und ich habe gerade einen Junit-tests (die tests auch mit intellij test-runner)
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testapp1</groupId>
<artifactId>testapp1</artifactId>
<name>testapp1</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.0.6.RELEASE</org.springframework-version>
<org.slf4j-version>1.6.1</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>org.springframework.maven.release</id>
<name>Spring Maven Release Repository</name>
<url>http://maven.springframework.org/release</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<!-- For testing against latest Spring snapshots -->
<repository>
<id>org.springframework.maven.snapshot</id>
<name>Spring Maven Snapshot Repository</name>
<url>http://maven.springframework.org/snapshot</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- For developing against latest Spring milestones -->
<repository>
<id>org.springframework.maven.milestone</id>
<name>Spring Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>testapp1</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
</plugin>
</plugins>
</build>
</project>
Außerdem sind meine unit-test wurde nicht als IntelliJ war nicht die Lösung der Anweisung:
int a = 1;
int b = 1;
assertTrue(a == b); //*** assertTrue was not resolving
Ich habe es zu arbeiten mit:
org.junit.Geltend zu machen.assertTrue(a == b);
Sehr seltsam, warum IntelliJ sagt mir nicht, was Sie hier importieren, ich konnte es nicht sogar versucht hinzuzufügen: import org.junit.Assert;
mvn
braucht ein Ziel. du meinst wohl laufen mvn package
Die fehlende version Zeug ist nur eine Warnung. wenn Sie nicht angeben-version es wird die aktuellste version zur Verfügung. dies könnte in Zukunft Probleme verursachen, aber wahrscheinlich nichts zu befürchten.
InformationsquelleAutor Blankman | 2011-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um loszuwerden, die lästigen version Warnungen, fügen Sie Sie zuerst:-
Den Grund
assertTrue()
nicht beheben richtige Weg ist, weil Sie brauchen, um zu konfigurieren, Intellij, um automatisch zu beheben die "import static" aufAssert
ersten. Dies ist eine einmalige Sache. Um dies zu konfigurieren, in Intellij, siehe meine gepostete Lösung bei Fügen Sie Lieblings-Methoden, um statischen import in IntelliJ? . Sobald dies konfiguriert ist, wird es beheben schön, nachdem Sie geben Sie eine assert-Anweisung. Sie können hinzufügen, andere nützlicheimport static
hier, zum Beispiel, wenn Sie mit Hamcrest, etc.Wie andere erwähnt haben, wenn Sie laufen
mvn
Befehl durch Befehlszeile, müssen Sie ein Ziel nachmvn
. Wenn Sie klicken Sie auf "Maven-Projekte" in der rechten navigation in Intellij, dann erweitern Sie die Dropdown-sehen Sie alle aufgeführten Ziele, die Sie verwenden können (reinigen, überprüfen, kompilieren, testen, etc...), dass Sie im Normalfall aufrufen, durch Intellij. Hier ist ein ausführliche Erklärung von Ihnen.Wenn ich du wäre, würde ich einfach laufen maven-Ziele direkt aus Intellij statt durch Befehl Linie, aber es ist wirklich eine Präferenz Sache... so oder so funktioniert.
ok jetzt funktioniert es mit Geltend zu machen.assertTrue mit dem import (manuell).
Ich rechne damit, v9, sollte nur gut funktionieren, auch. Wenn Sie
assertTrue
müssen Sie drücken Sie ALT+EINGABETASTE mit dem cursor über diese Aussage... Sie erhalten ein pop-up mit "Static Import-Methode...". Es fügt nicht automatisch die statischen import für Sie, das ist sehr Verschieden von Eclipse.Ich glaube, Sie wollen nicht zu tun
Assert.assertTrue(..)
denn während es funktioniert, es neigt zu überhäufen, die Ihre Testfälle mit diesen Präfixen.InformationsquelleAutor limc
Sie nicht brauchen, um ausführen von mvn
müssen Sie führen so etwas wie mvn compile oder mvn package
es sieht wie Sie einem fehlt die version für Ihren compiler-plugin und für die Krieg-plugin. können Sie nach Ihren pom.xml um Ihnen zu zeigen, wo man dieses Problem beheben?
InformationsquelleAutor Daniel Kurka
Müssen Sie zum aufrufen von maven mit dem Ziel, z.B.
Können Sie ignorieren die fehlende version Warnung im moment. Allerdings sollten Sie die Versionen Ihrer pom.xml.
Beim hit-test im Frühjahr mit junit seine Berufung:
Ist ein gültiges Ziel als gut.
InformationsquelleAutor Udo Held