2010-09-17 16 views
58

Oluşturmak istediğim birkaç Mojos için ortak mantığı barındırmak üzere bir Plexus bileşeni oluşturdum. Ben localRepository gibi bilgi ve Mojo (ve test durumlarda) proje geçme başardık.Güncel MavenSession veya MavenExecutionRequest'i bir Plexus Bileşeninden Nasıl Alınır

veya MavenExecutionRequest öğelerini bir Mojo'dan parametreler olarak geçirmeye gerek kalmadan bileşenin içinden almanın bir yolu olup olmadığını merak ediyordum. Bileşenimin Maven Mojo'dan kaçacağını biliyorum.

Bu örnekte Maven 2 kullanıyorum.

+0

Sorunun oldukça eski olduğunu biliyorum. Thomas, aynı seansı birkaç aşamada yeniden kullanmak mı istiyorsunuz yoksa sadece mevcut MavenSession'ına bir referans mı ihtiyacınız var? –

+0

Hmm .. varsa, artık iş parçacığı güvenli olmayacaktır. – eckes

cevap

1

Orada olduğuna inanmıyorum, bence bu iyi bir fikir.

Anlayışımdan, neyi başarmayı amaçladığınız, birkaç mojos için kullanılacak olan ortak bir bileşene sahip. Bu, mevcut Maven oturumunun daha sonra bir değeri geri vermek için kullanılan &'dan geçirilmesini gerektirir.

Maven'in çalışma şekli, neredeyse konteynır benzeri bir ortamda eklentilerin hedeflerini çalıştırmasıdır. Her bir eklentinin, <executions /> tarafından tanımlandığı gibi belirli bir Maven Phase içinde hareket etmesi sağlanır. Bu, Maven'in bina, test etme, kontrol etme, dağıtma vb. Karmaşıklıklarını ayırmasına izin verir. Hatalı olmadığım sürece mvn clean install çağrısı, biri cleanbuild lifecycle, ardından install'u çalıştırmak için iki ayrı gerçekleştirmedir.

Bu nedenle, ve sonraki MavenExecutionRequest'un önceki çağrıda kullanılan aynı örneği temsil ettiğini varsaymak güvenli değildir. clean, mantığı yeni bir oturumda sürdürülmemesi gereken ayrı bir çağrıdır.

Peki, ne esasen diyorum ortak pleksus bileşenine sahip iken sizin Mojos arası tutarlılığı korumak için özellikle iyi bir uygulama olduğunu, bu doğru bir uygulamadır (neredeyse ioc), her zaman uygun oturumu sağlamak .

Umarım aradığınız cevap budur. Oldukça uzun, ancak neden oturumu sağlamanız gerektiğini anlamak için, Maven'u düşünün.

İlgili konular