Portál AbcLinuxu, 18. května 2025 07:36

Dotaz: java - maven + dependence na vlastní projekt

5.7.2012 07:14 Lukyn11
java - maven + dependence na vlastní projekt
Přečteno: 482×
Odpovědět | Admin
Ahoj. Rád bych vás tu požádal o radu.

Chtěl bych mít 2 projekty.
1 - webová aplikace (MyWeb)
2 - knihovna nějaký utilit (MyUtils)


Poradili byste mi tu jak na to, aby si maven natahoval MyUtils do MyWeb?
To MyUtils musí být také webová aplikace nebo lze použít i obyčejný java project?
A abych to mohl udělat, musím mít vytvořen nějaký vlastní repozirář na PC nebo stačí, když budou oba projekty v jednom workspace?

Díky.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.7.2012 17:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud používáte Maven, použijete v MyWeb závislost na MyUtils jako na kterékoli jiné knihovně. Packaging MyUtils bude pravděpodobně jar, jako u ostatních knihoven. Když používáte Maven, repozitář na svém PC už vytvořen máte, stahují se do něj všechny závislosti a instalují se tam vámi sestavené aplikace při mvn install.

Především ale budete potřebovat přečíst si něco o základech Mavenu, ten se nedá pro vývoj používat tak, že jen někde něco spustíte a ono se to samo udělá. Musíte vědět, jak se v něm projekt popisuje, co jsou závislosti atd.
5.7.2012 19:38 Lukyn11
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Díky za odpověď. Nějaké to základní nastavení mavenu znám, ale ne nijak do hloubky, když to nikde nepoužívám a jen tak doma si s tím hraji, že si zkusím tohle nebo tamto. No, a ono jak se to nejlépe nauučit? Zkusit si to :)

No, mě se podařilo přidat si MyUtils do MyWeb. Ale jde mi to jen když mám oba projekty v eclipsu naimportované. Předpokládám ale, že by to mělo jít i tak, že budu mít přístup ke třídám z MyUtils, i když ho nebudu mít naimportované, že jo?

Je potřeba nějak speciálně nastavit MyWeb? Jinak *.jar toho MyWeb mám v .m2 repozitáři mavenu. A asi bych měl tento jar vidět také v "Referenced Library" v eclipsu, ano? (to teďka nevidím)
5.7.2012 19:44 Lukyn11
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Oprava toho poslendního odstavečku (zaměnil jsem MyWeb a MyUtil). Správně jsem chtěl napsat: Je potřeba nějak speciálně nastavit MyUtils? Jinak *.jar toho MyUtils mám v .m2 repozitáři mavenu. A asi bych měl tento jar vidět také v "Referenced Library" v eclipsu, ano? (to teďka nevidím)
6.7.2012 09:31 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Eclipse je ještě něco jiného, ale předpokládám, že si závislosti z Mavenu umí nějak převzít (buď automatickým importem, nebo nějakou ručně vyvolanou akcí). Asi bude nejjednodušší, když sem ke komentáři ty dva pom.xml připojíte.
6.7.2012 13:18 Lukyn11
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt

Pokud mám dependence, které si musí maven odněkud stáhnout, pak se mi načtou i do eclipsu. Problem je s tím, když je to ten projekt, který mám jenom já na PC. Zkušel jsem do pom.xml přidat i <repository> přímo s <url>, kde mám já na PC ten repozitář, ale také to nepomohlo.

Nyní ty pom.xml vypadají jen takto (mám tu jen klasickou aplikaci: myAppl):
<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>cz.test.myAppl</groupId>
<artifactId>myAppl</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>myAppl</name>
<url>http://maven.apache.org</url>

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

<dependencies>
<dependency>
<groupId>cz.test.myUtils</groupId>
<artifactId>myUtils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

A tady myUtisl:
<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>cz.test.myUtils</groupId>
<artifactId>myUtils</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>myUtils</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>


A do myAppl se snažím přidat myUtisl.

6.7.2012 14:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Ty pom.xml vypadají správně. Když teď myUtils skompilujete, sestavíte a nainstalujete do lokálního repository (příkazem mvn install), Maven jej bude umět používat jako každou jinou závislost.
6.7.2012 20:24 Lukyn11
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Díky. Sestavit ten projekt jde. Ovšem jde o to, že se mi do eclipsu ten jar soubor nenakopíruje do Referenced Libraries. Takže pro mne je teď řešení - buď si tam přidám ručně ten vytvořený jar mezi Referenced Libraries nebo budu mít v eclipsu otevřené oba projekty.
Myslel jsem, že by tohle měl maven také zvládnout sám. Pro všechny ostatní dependece (asi tedy projekty které nemam na PC) to zvládne (např. když si přidám dependency na spring).
Ale i tak díky, že jste se mi věnoval.
6.7.2012 22:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Když ten projekt pomocí mvn install nainstalujete do lokálního repository, je to pro Maven knihovna jako jakákoli jiná. Nevím, jakým způsobem přebírá Eclipse závislosti z Mavenu, ale není důvod, proč by tuto závislost neměl převzít. Napadá mne jedině to, zda nemáte jinak nadefinovaný MAVEN_HOME pro externí Maven (z příkazové řádky) a jiný pro Eclipse. Tj. že by Eclipse hledal jinde, než kam projekt pomocí mvn install nainstalujete. Zkuste to najít v konfiguraci Eclipse a podívat se, zda je v tom repository vaše knihovna uložená.
10.7.2012 21:37 soyo
Rozbalit Rozbalit vše Re: java - maven + dependence na vlastní projekt
Eclipse potrebuje .classpath a .project (a pripadne adresar .settings) v roote projektu. Zavislosti su v .classpath. Na generovanie tychto konfigurakov z pom.xml sluzi bud maven-plugin eclipse (maven-eclipse-plugin - http://maven.apache.org/plugins/maven-eclipse-plugin) alebo plugin priamo do eclipsy (napr. m2eclipse).

Maven plugin sa pouzije z cmd: mvn eclipse:eclipse

Toto vygeneruje .classpath a .project (na zavislosti sa odkazuje cez premennu M2_REPO - treba ju bud nastavit rucne, alebo prikazom) mvn -Declipse.workspace=<path-to-eclipse-workspace>> eclipse:add-maven-repo

Plugin eclipsy - m2eclipse prida priamo v importovani projektu volbu "import as maven project" - a malo by sa to samo postarat o zavislosti.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.