2012-02-14 5 views
2

を使用するための正しい方法: 、私はここに2つの問題だMavenのために、私は新たなんだMavenの

は、どのアーティファクトの問題を解決するために不足していますか?

jcharts-0.7.5が必要ですが、Maven Central Repositoryでは使用できません。私はjarファイルを持っていますが、それをmavenプロジェクトに入れるのは簡単ではないようです。

2、アーティファクトの間違った依存範囲を修正するにはどうすればよいですか?私はWARプロジェクトは、(「提供」の間違い)「をコンパイル」の範囲でサーブレットAPI-2.3に依存しているアーティファクトaxis2のカーネルに依存するので、mvn installパケットサーブレットAPI-持っ

2.3.jarをwarファイルに追加し、 "validateJarFile(...) - jarがロードされていない"ようにします。 http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-kernel</artifactId> 
     <version>...</version> 
     <exclusions> 
     <exclusion><!-- declare the exclusion here --> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    </dependencies> 
</project> 
+1

、あなたの最初の質問はすでにここに回答されている。..ポストごとに一つの質問に固執してくださいhttp://stackoverflow.com/questions/4919256/add-compiled-java-class -to-a-maven-project/5563614#5563614 – Tim

答えて

1

でエラーが発生しました。これは静的コンテンツを持つ単純なApache HTTPサイトにすることができます。しかし、Sonatype NexusやJFrog Artifactoryを使用して、他の場所にないアーティファクトを保存することをお勧めします。 JBossリポジトリまたはIBiblio(どちらも非常に大きい)にあります。

2つ目:あなたのpomに依存性を追加して、必要なスコープを設定するだけです。あなたがアーティファクトを除外したら、とにかくそれをもう一度加える必要があります。 Mavenはいつもあなたに直接あるものを好むだろうPOM:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <scope>provided</scope> 
</dependency> 
2

ナンバー1:Mavenのリポジトリを使用しますが<除外>タグを使用して推移依存関係を除外することができます:あなたの2つ目の質問に答えるためにTomcat 7

+0

スコープが指定されたservlet-apiを追加する方が、実際にはより良いオプションになるかもしれません。 Nexus/JFrogの使用に関しては、私がリンクしている回答よりも「良い」オプションですが、OPはまだ始まっています。 ;) – Tim

+0

ちょっとショック以外の選択肢はありません:) しかし、Mavenリポジトリを一般的なネットワークドライブに置き換えることができます。 file:///を介して参照してください。これはすばやく汚れていて、アーティファクトをローカルにインストールすることなく誰でもビルドを実行することができます。 – wemu

0
  1. どのように不足している依存関係を追加するには多くの異なる解決策があります。たとえば、スコープsystemを使用してパスを指定することができます(JARをプロジェクトに配置し、${basedir}を基準にしたパスを使用できます)。

    しかし、もっと良い解決策は、彼らはあなたがあなた自身のリポジトリを作成することができ、彼らはまだ動作しているためNexusまたはArtifactoryのようなサーバーをインストールすることで、インターネットは、いくつかの馬鹿があなたのルーターを壊すか、ISPは、いくつかを持っているとき、たとえば(失敗します問題や誰かが18インチのdouble-Tスチールビームを一束の繊維で運ぶ)。

    ビルドも非常に高速です。これは、ダウンロードが地球の半分になるのではなくローカルのLANを経由するためです。

  2. POMの依存関係を異なるスコープで繰り返すことができます(あなたのPOMは常に勝ちます)か、use a dependencyManagement elementにすることができます。

    私はdependencyManagementアプローチを好んでいます。これは、すべてのプロジェクトで1つの場所にスコープとバージョンを設定できるためです。将来の再利用の利益のために

関連する問題